Skip to main content

5.13.1 Tilrettelegging av data for overlevelsesanalyser

Overlevelsesanalyser forutsetter følgende:

  • En klart definert måleperiode

  • En klar definisjon av hvilken hendelse man vil estimere sannsynligheten for

  • Et ferdig tilrettelagt datasett som må inneholde følgende variabler:

    • Tid
    • Hendelse

Variabelen «tid» må inneholde et mål på tiden som har gått fra et gitt starttidspunkt til den spesifikke hendelsen skjer. Man kan fritt velge måleenhet, f.eks. antall dager, uker, måneder eller år. Det eneste kravet er at «tid» må være en numerisk variabel.

Variabelen «hendelse» må også være numerisk og inneholde verdien 1 for personer hvor hendelsen faktisk har skjedd i løpet av den gitte måleperioden. For personer hvor hendelsen evt. ikke har skjedd i denne perioden, settes verdien til 0. Sistnevnte kalles «sensurerte» tilfeller. Dette er altså personer der man ikke kan vite om hendelsen har skjedd, enten for at den kan ha skjedd etter at måleperioden var ferdig, eller for at de har forsvunnet fra populasjonen i løpet av måleperioden. Man ikke angi verdien 0, det kan ofte være tilfeller der «hendelse» har verdi 1 for alle enheter (individer).

Tid og hendelse kan beregnes på følgende måter:

  • Bruk av import-kommandoen import-event som lar deg definere en hendelsesvariabel og en måleperiode, og som legger til startdateringer for alle hendelser i ditt datasett. Deretter brukes aggregeringskommandoen collapse(min) på startdateringsvariabelen for å finne tidspunktet for den gitte hendelsen gitt ved en spesifikk verdi på variabelen du importerer gjennom import-event.

  • Bruk av ferdige dateringsvariabler som angir en fast datering per enhet/individ, f.eks. dødsdato eller uføredato.

Eksempel som demonstrerer tilrettelegging gjennom bruk av import-event og collapse(min):

 require no.ssb.fdb:23 as ds

textblock
Lager datasett med relevant hendelsesvariabel og definerer måleperiode
endblock

create-dataset arbeidsledige
import-event ds/ARBSOEK2001FDT_HOVED 2010-01-01 to 2019-12-15 as astatus

textblock
Beholder alle hendelser hvor arbeidssøkerstatus = helt arbeidsledig og dato >= 2010
endblock

keep if astatus == '1' & START@astatus > date(2010,01,01)

textblock
Trekker ut første forekomst av hendelse og aggregerer opp til individnivå
endblock

collapse (min) START@astatus, by(PERSONID_1)

//Kjører analysen på et lite tilfeldig utvalg (valgfritt)
sample 10000 3245

textblock
Beregner antall dager fra start på måleperiode til første gang hendelse skjer
endblock

generate dager = START@astatus - date(2010,01,01)
replace dager = 0 if dager < 0
summarize dager
histogram dager

textblock
Lager variabelen hendelse som tar verdien 1 for alle med verdi på antall dager.

De som ikke har verdi for antall dager eller som har hendelsesdato etter at måleperioden er passert, får verdien 0 (personer med verdien 0 kalles sensurerte tilfeller på fagspråket).
endblock

generate hendelse = 1 if sysmiss(dager) == 0
replace hendelse = 0 if sysmiss(dager) | START@astatus > date(2019,12,15)

textblock
Setter antall dager til maksverdi for personer der hendelsen ikke har skjedd i løpet av måleperioden. Dette er altså personer som har gått gjennom hele måleperioden uten at hendelsen har skjedd. Disse får dessuten hendelse = 0 satt gjennom steget over.
endblock

replace dager = date(2019,12,15) - date(2010,01,01) if sysmiss(dager)

tabulate hendelse, summarize(dager) mean freq

textblock
Lager en årsvariabel for å kunne bruke antall år i stedet for antall dager
endblock

generate år = int(dager/365.24)
tabulate år, missing
histogram år, discrete
summarize år hendelse
histogram dager

textblock
Henter og tilrettelegger diverse tilleggsvariabler for å kunne sammenlikne overlevelsesrater mellom grupper av befolkningen
endblock

import ds/BEFOLKNING_KJOENN as kjønn
import ds/BEFOLKNING_INVKAT as invkat
import ds/BEFOLKNING_FOEDSELS_AAR_MND as fdato

generate alder2010 = 2010 - int(fdato/100)
generate aldersgruppe = 1
replace aldersgruppe = 2 if alder2010 > 30
replace aldersgruppe = 3 if alder2010 > 50
define-labels alderslabel 1 "Alder 0-30 år" 2 "Alder 31-50 år" 3 "Alder 51 år ->"
assign-labels aldersgruppe alderslabel

generate norsk = 0
replace norsk = 1 if invkat == 'A'

summarize norsk
tabulate hendelse norsk
tabulate år norsk

define-labels norsklabel 0 "Utenlandsk opprinnelse" 1 "Norsk opprinnelse"
assign-labels norsk norsklabel
 

Eksempel som demonstrerer tilrettelegging gjennom bruk av faste dateringsvariabler:

 
require no.ssb.fdb:23 as ds

textblock
Lager datasett bestående av personer over 70 år som er bosatt i Norge per 2010-01-01
endblock

create-dataset eldre
import ds/BEFOLKNING_FOEDSELS_AAR_MND as fdato
import ds/BEFOLKNING_STATUSKODE 2010-01-01 as regstat
generate alder = 2010 - int(fdato/100)
keep if alder > 70 & regstat == '1'

textblock
Henter en ferdig dateringsvariabel (fast opplysning): Dødsdato

Gjør noen operasjoner for å kunne lage standard UnixTime-format på datoer gjennom funksjonen date()
endblock

import ds/BEFOLKNING_DOEDS_DATO as dødsdato
summarize dødsdato
replace dødsdato = string(dødsdato)
generate yyyy = substr(dødsdato,1,4)
generate mm = substr(dødsdato,5,2)
generate dd = substr(dødsdato,7,2)
destring yyyy
destring mm
destring dd
generate dødsdato2 = date(yyyy,mm,dd)
summarize dødsdato2

textblock
Regner ut antall dager frem til dødsdato målt fra 2010-01-01
endblock

generate dager = dødsdato2 - date(2010,01,01)
replace dager = 0 if dager < 0 

textblock
Setter hendelse = 1 dersom dødsdato har en verdi som er større enn 2010-01-01. Bruker 2023-01-01 som max måledato. Andre får hendelse = 0.
endblock

generate hendelse = 0
replace hendelse = 1 if sysmiss(dødsdato) == 0 & dødsdato2 >= date(2010,01,01) & dødsdato2 <= date(2023,01,01)

textblock
Setter antall dager til maksverdi dersom ingen dødsdato eller dødsdato skjer etter siste måletidspunkt
endblock

replace dager = date(2023,01,01) - date(2010,01,01) if sysmiss(dager) | dødsdato2 > date(2023,01,01)

tabulate hendelse, summarize(dager) mean freq

//Lager en årsvariant til måling av antall år
generate år = int(dager/365.24)
tabulate år

//Henter kjønn for å kunne sammenlikne overlevelsesrate mellom kjønn
import ds/BEFOLKNING_KJOENN as kjønn