Lage datasett bestående av søsken
Skriptet under demonstrerer hvordan man bygger et datasett bestående av søsken, gjennom å bruke opplysninger om paritet (nummer i fødselsrekkefølgen per mor). Siden antallet gjentakende operasjoner er ganske omfattende, benyttes løkkefunksjonalitet for å forenkle. [Du kan lese mer om løkker her](docs/brukermanual/6. Bindinger og løkker/6.2 Løkker.md)
Fremgangsmåten som gjennomgås baserer seg på å splitte opp totalpopulasjonen etter paritet. Man konverterer så fra person- til mødrenivå og kobler sammen alle datasettene via identifikator som peker til mor.
Datasettet man sitter igjen med til slutt består av mødre som enhet, samt data om inntil 9 søsken. Dette er en begrensning som skyldes at forekomstene av kull større enn 9 utgjør et antall som gjør at de respektive datasettene kommer under minimumsgrensen på 1000.
I eksempelet henter man opplysninger om søskens bosted ved alder 16, kjønn og alder per 2023. Det er også mulig å benytte andre opplysninger som inntekt, utdanning, jobb- eller trygdestatus, etc.
require no.ssb.fdb:30 as db
//Sjekker paritet (nummer i fødselsrekkefølgen) for befolkningen og lager deretter datasett av mødre
create-dataset mødre
import db/BEFOLKNING_PARITET as paritet
import db/BEFOLKNING_MOR_FNR as morid
textblock
Total befolkning fordelt på paritet (nummer i fødselsrekkefølgen):
endblock
tabulate paritet
collapse(count) paritet -> ant_barn, by(morid)
textblock
Total befolkning av mødre fordelt på antall barn:
endblock
tabulate ant_barn, missing
//Lager separate datasett basert på paritet, endrer enhetstype til mors id, og kobler alle sammen med mødredatasettet
for i in 1:9
let var1 = kommune_16år ++ $i
let var2 = kjønn ++ $i
let var3 = alder ++ $i
let n = n ++ $i
create-dataset paritet ++ $i
import db/BEFOLKNING_PARITET as paritet
keep if paritet == $i
import db/BEFOLKNING_MOR_FNR as morid
import db/NUDB_KOMM_16 as $var1
import db/BEFOLKNING_KJOENN as $var2
import db/BEFOLKNING_FOEDSELS_AAR_MND as fdato
generate $var3 = 2023 - int(fdato/100)
destring $var1 $var2
drop paritet fdato
generate $n = 1
collapse (count) $n (mean) $var1 $var2 $var3, by(morid)
tabulate $n, freq cellpct
merge $n $var1 $var2 $var3 into mødre
end
//Mødredatasettet består nå av data for inntil 9 barn (søsken) per mor, dvs. de 9 første fødte. Barn som er enda senere i rekken inkluderes ikke pga. at de utgjør veldig få individer (kommer under enhetsgrensen for datasett på 1000).
//Merk også at det finnes dubletter innenfor noen av paritetene, jfr. tabellene over n1, n2, n3, ..., n9 der verdien er større enn 1 (kun ett barn per paritet bør forekomme). Dette skyldes feilkoding av paritet.
use mødre
generate ant_søsken = rowvalid(n1, n2, n3, n4, n5, n6, n7, n8, n9)
textblock
Statistikk over antall søsken i alle søskenflokker. Teller bare opp søskenflokker opptil 9 barn.
Merk: Statistikken baserer seg på paritetsdata.
endblock
tabulate ant_søsken
textblock
Fordeling på kjønn og antall barn per paritet for nr. 1, 2 og 3. Man ser at det er en liten andel dubletter gitt ved hhv. n1, n2, n3 > 1. Videre ser man hvordan disse fordeler seg mellom kjønn (mann = 1 og kvinne = 2, desimaltall tyder på at dublettene har ulike kjønn):
endblock
tabulate kjønn1 n1
tabulate kjønn2 n2
tabulate kjønn3 n3
textblock
Gjennomsnittsalder for paritet nr. 1, 2 og 3:
endblock
summarize alder1 alder2 alder3
textblock
Diskrete histogrammer som viser alderssammensetningen for paritet nr. 1 og 2 i de tilfellene hvor man har dubletter. For paritet 1 ser man at alder med desimaltall forekommer, noe som tyder på at noen av dublettene har ulik alder. For paritet 2 virker det som at dublettene har lik alder ettersom bare heltall forekommer:
endblock
histogram alder1 if n1 > 1, discrete
histogram alder2 if n2 > 1, discrete
textblock
Før videre analyser bør man finne ut hva man skal gjøre med dublettene (som skyldes feilkoding). Man kan f.eks. fjerne dublettforekomstene eller velge ut en av dem etter gitte kriterier. En av flere mulige kilder til feil kan være personer som endrer personid-type fra DNR til FNR, slik at de fremstår som to personer i datasettet. Dette kan sjekkes ved å legge til variabelen `BEFOLKNING_MRK_FNR` eller variabel som viser fødeland eller innvandrerstatus.
endblock