Skip to main content

Flytdiagram - sankey med flere overganger

Skriptet under demonstrerer hvordan man kan lage flytdiagrammer som viser overganger mellom mer enn to tilstander. Dette gjør deg i stand til å følge individuelle bevegelser over lengre tidsperioder og med hyppigere målinger.

 require no.ssb.fdb:30 as db

create-dataset sankeydata
import db/BEFOLKNING_FOEDSELS_AAR_MND as fdato
generate alder = 1992 - int(fdato/100)
keep if inrange(alder,18,20)
import db/BOSATTEFDT_BOSTED 1992-01-01 as kommune92
import db/BOSATTEFDT_BOSTED 2002-01-01 as kommune02
import db/BOSATTEFDT_BOSTED 2012-01-01 as kommune12
import db/BOSATTEFDT_BOSTED 2022-01-01 as kommune22

generate fylke92 = substr(kommune92,1,2)
generate fylke02 = substr(kommune02,1,2)
generate fylke12 = substr(kommune12,1,2)
generate fylke22 = substr(kommune22,1,2)

sankey fylke92 fylke02 fylke12 fylke22 

//Merk at kommunekodene endret seg veldig mye fra 2020, derfor de store endringene for fylke22. Man kan enten kode om fylkeskodene så de matcher, eller man kan lage grovere inndelinger slik som under (regioner).

generate region22 = 1 if inlist(fylke22,'03') //Oslo
replace region22 = 2 if inlist(fylke22,'30','34','38') //Østlandet
replace region22 = 3 if inlist(fylke22,'11','42') //Sørlandet og Rogaland
replace region22 = 4 if inlist(fylke22,'46') //Vestlandet
replace region22 = 5 if inlist(fylke22,'15','50') //Midtnorge
replace region22 = 6 if inlist(fylke22,'18','54') //Nordnorge

generate region12 = 1 if inlist(fylke12,'03') //Oslo
replace region12 = 2 if inlist(fylke12,'01','02','04','05','06','07','08') //Østlandet
replace region12 = 3 if inlist(fylke12,'09','10','11') //Sørlandet og Rogaland
replace region12 = 4 if inlist(fylke12,'12','14') //Vestlandet
replace region12 = 5 if inlist(fylke12,'15','16','17') //Midtnorge
replace region12 = 6 if inlist(fylke12,'18','19','20') //Nordnorge

generate region02 = 1 if inlist(fylke02,'03') //Oslo
replace region02 = 2 if inlist(fylke02,'01','02','04','05','06','07','08') //Østlandet
replace region02 = 3 if inlist(fylke02,'09','10','11') //Sørlandet og Rogaland
replace region02 = 4 if inlist(fylke02,'12','14') //Vestlandet
replace region02 = 5 if inlist(fylke02,'15','16','17') //Midtnorge
replace region02 = 6 if inlist(fylke02,'18','19','20') //Nordnorge

generate region92 = 1 if inlist(fylke92,'03') //Oslo
replace region92 = 2 if inlist(fylke92,'01','02','04','05','06','07','08') //Østlandet
replace region92 = 3 if inlist(fylke92,'09','10','11') //Sørlandet og Rogaland
replace region92 = 4 if inlist(fylke92,'12','14') //Vestlandet
replace region92 = 5 if inlist(fylke92,'15','16','17') //Midtnorge
replace region92 = 6 if inlist(fylke92,'18','19','20') //Nordnorge

define-labels regiontxt 1 Oslo 2 Østlandet 3 "Sørlandet og Rogaland" 4 Vestlandet 5 "Midt-Norge" 6 "Nord-Norge"
assign-labels region92 regiontxt
assign-labels region02 regiontxt
assign-labels region12 regiontxt
assign-labels region22 regiontxt

sankey region92 region02 region12 region22


create-dataset sankeydata2
import db/BEFOLKNING_FOEDSELS_AAR_MND as fdato
generate alder = 2015 - int(fdato/100)
keep if inrange(alder,18,67)
import db/REGSYS_ARB_ARBMARK_STATUS 2015-11-16 as arbstatus15
import db/REGSYS_ARB_ARBMARK_STATUS 2019-11-16 as arbstatus19
import db/REGSYS_ARB_ARBMARK_STATUS 2023-11-16 as arbstatus23

recode arbstatus15 arbstatus19 arbstatus23 ("2" = "1")
define-labels arbstatustxt "0" "Utenfor arbeidsstyrken" "1" "I jobb" "3" "Helt ledig"
assign-labels arbstatus15 arbstatustxt
assign-labels arbstatus19 arbstatustxt
assign-labels arbstatus23 arbstatustxt

sankey arbstatus15 arbstatus19 arbstatus23
sankey arbstatus15 arbstatus19 arbstatus23 if inrange(alder,18,25)
sankey arbstatus15 arbstatus19 arbstatus23 if inrange(alder,26,50)
sankey arbstatus15 arbstatus19 arbstatus23 if inrange(alder,60,67)


create-dataset sankeydata3
import db/BEFOLKNING_FOEDSELS_AAR_MND as fdato
generate alder = 1992 - int(fdato/100)
keep if inrange(alder,18,67)
import db/SIVSTANDFDT_SIVSTAND 1992-01-01 as sivstand92
import db/SIVSTANDFDT_SIVSTAND 2002-01-01 as sivstand02
import db/SIVSTANDFDT_SIVSTAND 2012-01-01 as sivstand12
import db/SIVSTANDFDT_SIVSTAND 2022-01-01 as sivstand22
drop if inlist("0",sivstand92,sivstand02,sivstand12,sivstand22)

recode sivstand92 sivstand02 sivstand12 sivstand22 ("5" "7" "8" = "4" "Skilt/separert")("6" = "2" "Gift/partner")("9" = "3")

sankey sivstand92 sivstand02 sivstand12 sivstand22