Løsning for oppgavesett – innføringskurs

Skriptet nedenfor viser hvordan man løser oppgavene i oppgavesettet som benyttes for det ordinære innføringskurset som Sikt og SSB kjører med jevne mellomrom.

Klikk her for mer info om våre kurs.

//Koble til databasen
require no.ssb.fdb:12 as ds

//Lage et datasett og avgrense populasjon
create-dataset totalpop

import ds/BEFOLKNING_FOEDSELS_AAR_MND as faarmnd
generate alder = 2019 - int(faarmnd/100)
histogram alder, discrete

import ds/BEFOLKNING_STATUSKODE 2019-01-01 as regstat
keep if regstat == '1'

histogram alder, discrete
summarize alder

keep if alder > 30 & alder < 50

import ds/BEFOLKNING_KJOENN as kjønn
import ds/BEFOLKNING_FODELAND as land
import ds/NUDB_BU 2019-07-31 as utd
import ds/BEFOLKNING_KOMMNR_FAKTISK 2019-01-01 as bosted
import ds/INNTEKT_WLONN 2015-12-31 as lønn15
import ds/INNTEKT_WLONN 2016-12-31 as lønn16
import ds/INNTEKT_WLONN 2017-12-31 as lønn17
import ds/INNTEKT_WLONN 2018-12-31 as lønn18
import ds/INNTEKT_WLONN 2019-12-31 as lønn19

//Kjøre deskriptiv statistikk

//Endimensjonalt
summarize lønn15 lønn16 lønn17 lønn18 lønn19

barchart (mean) lønn15 lønn16 lønn17 lønn18 lønn19
barchart (count) lønn15 lønn16 lønn17 lønn18 lønn19
barchart (median) lønn15 lønn16 lønn17 lønn18 lønn19

histogram lønn19, freq
histogram lønn19, freq normal

//Todimensjonalt
generate norsk = 0
replace norsk = 1 if land == '000'
tabulate norsk
tabulate norsk, cellpct
piechart norsk

generate utdnivå = substr(utd,1,1)
tabulate utdnivå, cellpct

destring utdnivå

summarize lønn15 lønn16 lønn17 lønn18 lønn19 if utdnivå < 2
summarize lønn15 lønn16 lønn17 lønn18 lønn19 if utdnivå > 6

tabulate kjønn, summarize(lønn19)
tabulate norsk, summarize(lønn19)
tabulate utdnivå, summarize(lønn19)

barchart (mean) lønn15 lønn16 lønn17 lønn18 lønn19, over(kjønn)
barchart (mean) lønn15 lønn16 lønn17 lønn18 lønn19, over(norsk)
barchart (mean) lønn15 lønn16 lønn17 lønn18 lønn19, over(utdnivå)


//Demonstrere kategorisering av yrker og labels
import ds/REGSYS_ARB_YRKE_STYRK08 2019-11-16 as yrke19

generate yrkesgr = 9
replace yrkesgr = 1 if substr(yrke19,1,1) == '1'
replace yrkesgr = 2 if yrke19 == '2211'
replace yrkesgr = 3 if yrke19 == '2212'
replace yrkesgr = 4 if yrke19 == '2223'
replace yrkesgr = 5 if substr(yrke19,1,2) == '23'
replace yrkesgr = 6 if substr(yrke19,1,2) == '25'
replace yrkesgr = 7 if substr(yrke19,1,2) == '61'
replace yrkesgr = 999 if sysmiss(yrke19)

define-labels yrkelabel 1 Ledere 2 Allmennleger 3 Legespesialister 4 Sykepleiere 5 Lærere 6 'IT-utviklere' 7 Landbruk 9 Annet 999 'Uten jobb'
assign-labels yrkesgr yrkelabel 

tabulate yrkesgr
tabulate yrkesgr, cellpct
tabulate yrkesgr, summarize(lønn19)
barchart (mean) lønn19, over(yrkesgr)
barchart (mean) lønn15 lønn16 lønn17 lønn18 lønn19, over(yrkesgr)


//Koble på informasjon om foreldre
import ds/BEFOLKNING_FAR_FNR as far_fnr
import ds/BEFOLKNING_MOR_FNR as mor_fnr

create-dataset foreldre
import ds/INNTEKT_WLONN 2019-12-31 as lønn19_far
import ds/REGSYS_ARB_YRKE_STYRK08 2019-11-16 as yrke19_far
import ds/NUDB_BU 2019-07-31 as utd_far
generate utdnivå_far = substr(utd_far,1,1)
destring utdnivå_far, force

clone-variables lønn19_far -> lønn19_mor
clone-variables yrke19_far -> yrke19_mor
clone-variables utdnivå_far -> utdnivå_mor

merge lønn19_far yrke19_far utdnivå_far into totalpop on far_fnr
merge lønn19_mor yrke19_mor utdnivå_mor into totalpop on mor_fnr

use totalpop
summarize lønn19 lønn19_far lønn19_mor
correlate lønn19 lønn19_far
correlate lønn19 lønn19_mor
correlate lønn19_far lønn19_mor
correlate utdnivå utdnivå_far
correlate utdnivå utdnivå_mor
correlate utdnivå_far utdnivå_mor

correlate lønn19 lønn19_far if kjønn == '1'
correlate lønn19 lønn19_mor if kjønn == '2'
correlate utdnivå utdnivå_far if kjønn == '1'
correlate utdnivå utdnivå_mor if kjønn == '2'

generate yrkesgr_far = 9
replace yrkesgr_far = 1 if substr(yrke19_far,1,1) == '1'
replace yrkesgr_far = 2 if yrke19_far == '2211'
replace yrkesgr_far = 3 if yrke19_far == '2212'
replace yrkesgr_far = 4 if yrke19_far == '2223'
replace yrkesgr_far = 5 if substr(yrke19_far,1,2) == '23'
replace yrkesgr_far = 6 if substr(yrke19_far,1,2) == '25'
replace yrkesgr_far = 7 if substr(yrke19_far,1,2) == '61'
replace yrkesgr_far = 999 if sysmiss(yrke19_far)

assign-labels yrkesgr_far yrkelabel
tabulate yrkesgr_far yrkesgr if yrkesgr_far < 9, rowpct
tabulate yrkesgr_far yrkesgr if yrkesgr_far < 9 & kjønn == '1', rowpct


//Kjøre en enkel regresjon
generate mann = 0
replace mann = 1 if kjønn == '1'

generate oslo = 1 if bosted == '0301'
replace oslo = 0 if bosted != '0301'
tabulate oslo, cellpct

generate høy_utd = 1 if utdnivå >= 7
replace høy_utd = 0 if utdnivå >= 0 & utdnivå < 7

regress lønn19 alder norsk oslo mann høy_utd lønn19_far
regress-predict lønn19 alder norsk oslo mann høy_utd lønn19_far, residuals(res)
histogram res
histogram res, normal


//Hente ut forløpsinformasjon: Personer med status som skilt i løpet av 2018
create-dataset forløp
import-event ds/SIVSTANDFDT_SIVSTAND 2018-01-01 to 2018-12-31 as sivforløp
keep if sivforløp == '4'
collapse (count) sivforløp , by(PERSONID_1 )
rename sivforløp ant_ganger_skilt
tabulate ant_ganger_skilt
merge ant_ganger_skilt into totalpop

use totalpop
generate skilt2018 = 0
replace skilt2018 = 1 if ant_ganger_skilt >= 1
tabulate skilt2018