flowchart TD
E["Epidemiologiske studier"]:::neutral
O["Observationelle<br>— registerforskning lever her"]:::active
X["Eksperimentelle"]:::ref
D["Deskriptive"]:::active
A["Analytiske"]:::active
CC["Case-control"]:::active
CO["Kohorte"]:::active
R["RCT<br>— kræver intervention,<br>ikke muligt med registerdata"]:::ref
E --> O
E --> X
O --> D
O --> A
A --> CC
A --> CO
X --> R
classDef neutral fill:#eef0f2,stroke:#8a94a6,color:#1f2733;
classDef active fill:#eaf2fb,stroke:#4a78b5,color:#173a5e;
classDef ref fill:#f6f6f6,stroke:#cccccc,color:#999999;
Planlæg dit studie
Inden du åbner R — definer spørgsmål, kohorte og datamodel
Registerforskning starter ikke i R. Det starter med blyant og papir. Denne side guider dig igennem de ting, du bør have på plads, inden du skriver en eneste linje kode.
Kort fortalt: Læg fire ting fast på papir, før du koder — et præcist forskningsspørgsmål, din datamodel (hvilke registre dækker eksponering, udfald og kovariater), dine kovariater valgt med en DAG, og din sammenligningskohorte.
Hvilken type studie laver du?
Næsten al registerforskning er observationel og analytisk — du observerer det der allerede er sket, uden at gribe ind. De to klassiske analytiske designs er case-control og kohorte; Fase 10 viser, hvordan du bygger et matchet kohortestudie. Randomiserede forsøg (RCT) kan ikke laves med registerdata og er kun taget med her for overblikkets skyld.
Case-control eller kohorte — hvad er forskellen?
De to analytiske designs adskiller sig i hvilken ende du starter fra:
| Kohorte | Case-control | |
|---|---|---|
| Udgangspunkt | Eksponering | Udfald |
| Retning | Følger fremad: eksponeret → udfald | Ser tilbage: case → tidligere eksponering |
| Bedst når | Eksponeringen er sjælden; flere udfald | Udfaldet er sjældent; ét udfald |
| Effektmål | Incidens, relativ risiko (RR), hazard ratio | Odds ratio (OR) |
| I registre | Definér eksponeret gruppe + sammenligningskohorte, følg fremad | Find alle cases, vælg kontroller, se bagud på eksponering |
Kohorte følger personer fremad i tid fra index-dato og måler hvor mange der får udfaldet — derfor kan man beregne incidens og risiko. Velegnet når du har flere udfald (jf. alle_dx-tilgangen i Fase 9b).
Case-control starter fra dem der allerede har udfaldet og matcher med kontroller uden — effektivt ved sjældne udfald, men kan ikke beregne absolut risiko.
Med registerdata kan du gøre begge dele, fordi hele befolkningens historik er tilgængelig. Fase 10 viser et matchet kohortestudie trin for trin.
Nøglebegreber
Inden du planlægger et studie er det værd at kende disse termer — de bruges igennem hele guiden.
Kohorte En gruppe af personer der følges over tid, fordi de deler en bestemt karakteristik på et bestemt tidspunkt. Eksempel: alle patienter der fik bariatrisk kirurgi i perioden 2010–2020.
Index-dato Startdatoen for opfølgningen — det tidspunkt fra hvilket du begynder at tælle. For opererede patienter er det typisk operationsdatoen. For matchede kontroller tildeles den samme dato som den matchede opererede patient.
Eksponering Den faktor du undersøger effekten af — fx en operation, et lægemiddel eller en diagnose.
Udfald Det du måler — fx debut af en sygdom, en indlæggelse, eller død.
Kovariater Variable du inkluderer for at tage højde for bl.a. confounding — faktorer der påvirker både eksponering og udfald. Eksempler: alder, køn, komorbiditet, socioøkonomisk status.
1. Hvad vil jeg undersøge?
Formulér dit forskningsspørgsmål præcist, inden du begynder at kigge på data. Et vagt spørgsmål giver et rodet datasæt. Et præcist spørgsmål giver en klar plan.
Stil dig selv disse spørgsmål:
| Spørgsmål | Eksempel |
|---|---|
| Hvem er min population? | Alle voksne med T2D i Danmark, 2010–2020 |
| Hvad er min eksponering? | Bariatrisk kirurgi |
| Hvad er mit udfald? | Demens |
| Hvornår starter opfølgningen? | Operationsdato (index-dato) |
| Hvornår stopper den? | Diagnose, død, emigration eller studieperiode slut |
| Hvilke confoundere skal justeres for? | Alder, køn, komorbiditet, SES |
2. Hvilke registre dækker hvad?
Inden du kortlægger din datamodel er det nyttigt at vide hvilke registre der eksisterer.
| Hvad skal du finde? | Register |
|---|---|
| Demografi (alder, køn, bopæl) | BEF — Befolkningsregistret |
| Hospitalsdiagnoser og -kontakter | LPR — Landspatientregistret (LPR2 + LPR3) |
| Receptordinerede lægemidler | LMDB — Lægemiddelstatistikregistret |
| Dødsdato (til censurering) | DODSAARS — Dødsregistret |
| Emigration (til censurering) | VNDS — Migrationsregistret |
| Uddannelse | UDDA — Uddannelsesregistret |
| Indkomst | FAIK — Familieindkomstregistret |
| Beskæftigelse | AKM — Arbejdsklassifikationsmodulet |
En komplet beskrivelse af alle registre med kolonnenavne og join-nøgler finder du i Fase 15 — Registerreference →
3. Vælg dine kovariater med en DAG
Hvilke variable skal du justere for? Det er ikke “så mange som muligt”. At justere for de forkerte variable kan indføre bias i stedet for at fjerne den.
Et DAG (directed acyclic graph — et kausalt diagram) er en tegning af dine antagelser om, hvordan eksponering, udfald og øvrige variable hænger sammen. Det gør dine antagelser eksplicitte og hjælper dig med at vælge det rigtige sæt kovariater.
Tommelfingerregler:
- Justér for confoundere — variable der påvirker både eksponering og udfald (fx alder, comorbiditet).
- Justér IKKE for mediatorer — variable der ligger på årsagsvejen mellem eksponering og udfald (det fjerner en del af den effekt du vil måle).
- Justér IKKE for colliders — fælles effekter af to variable (det åbner en falsk sammenhæng).
Eksempel: kirurgi og demens — en DAG med confounder, mediator og collider
Et konkret eksempel: påvirker kirurgi risikoen for demens?
- Alder er en confounder — den påvirker både sandsynligheden for kirurgi og for demens. Justér for den.
- Delir (postoperativt delirium) er en mediator — den ligger på vejen kirurgi → delir → demens. Justér ikke — så fjerner du en del af den effekt du vil måle.
- Indlæggelse er en collider — både kirurgi og demens fører til indlæggelse. Justér ikke — det åbner en falsk sammenhæng.
Du kan indsætte modellen direkte i dagitty.net og få det minimale justeringssæt udregnet:
dag {
Alder [pos="0,-1"]
Kirurgi [exposure, pos="-1.5,0"]
Delir [pos="0,0"]
Demens [outcome, pos="1.5,0"]
Indlaeggelse [pos="0,1"]
Alder -> Kirurgi
Alder -> Demens
Kirurgi -> Delir
Delir -> Demens
Kirurgi -> Indlaeggelse
Demens -> Indlaeggelse
}
For denne DAG er det minimale justeringssæt {Alder} — du skal kun justere for alder.
Værktøjer
- dagitty.net — tegn dit diagram i browseren; det udregner automatisk det minimale sæt af kovariater du skal justere for.
- Causal Diagrams: Draw Your Assumptions Before Your Conclusions — gratis HarvardX-kursus af Miguel Hernán om netop dette.
- Baggrund: Hernán & Robins, Causal Inference: What If (gratis PDF) — også i Fase 15 — Læringsressourcer.
4. Sammenligningskohorten
Mange studier sammenligner en eksponeret gruppe med en sammenligningskohorte. Hvordan du bygger den, er en designbeslutning du skal tage på papir — inden koden.
Det skal du overveje:
- Hvem er en passende sammenligningskohorte? Fx for bariatrisk kirurgi: personer med svær overvægt der ikke blev opereret, eller en matchet baggrundsbefolkning. Valget afhænger af spørgsmålet.
- Index-dato til sammenligningskohorten. Din eksponerede kohorte har en index-dato der er bestemt af eksponeringen (fx operationsdatoen). Det har sammenligningskohorten ikke — den skal tildeles en dato, typisk den samme dato som den matchede eksponerede person, så begge grupper følges fra et sammenligneligt tidspunkt.
- Eligibilitet ved index. Sammenligningskohorten skal opfylde inklusionskriterierne på sin tildelte index-dato — ellers risikerer du immortal time bias (en skævvridning der opstår, når en person tildeles eksponeringstid, hvori de per definition ikke kunne have fået udfaldet endnu).
- Matchingvariable og -ratio. Fx alder, køn og kalenderår; beslut forholdet (fx 1:5).
- Kan nogen i sammenligningskohorten blive eksponeret senere? Fx: kan en person der startede som kontrol, få operationen på et tidspunkt? Beslut hvad der sker i det tilfælde — om de forbliver kontrol, eller overgår til den eksponerede gruppe.
- Samme eksklusioner anvendes på begge grupper.
→ Det komplette mønster for kohorteopbygning og matching finder du i Fase 10 — Byg din studiepopulation.
5. Dan et overblik — pen og papir
Inden du åbner R, svar på disse spørgsmål skriftligt:
- Hvilke variable skal jeg bruge? (patientinformation — alder, køn, diagnoser mv. - og for hvilke år)
- Hvilke registre indeholder disse oplysninger? (LPR, BEF, LMDB, …)
- I hvilken rækkefølge skal data samles? (definer population → hent udfald → hent kovariater)
Et godt overblik på papiret sparer mange timers fejlretning i koden.
Eksempel: overblik for et demensstudie
Population: Voksne der har fået bariatrisk kirurgi (identificeret via Databasen for Behandling af Svær Overvægt — DBSO), 2010–2024
Matchede kontroller fra Befolkningsregistret (BEF)
Udfald: Første demensdiagnose (LPR — ICD-10: F00–F03, G30–G31)
Dato: første kontakt med demenskode efter operationsdato
Kovariater: Alder og køn (BEF)
Komorbiditet (LPR — 5-års lookback, dvs. diagnoser i de 5 år inden index-dato)
Uddannelse (UDDA)
Indkomst (FAIK via BEF familie_id)
Beskæftigelse (AKM)
Censurering: Død (DODSAARS)
Emigration (VNDS)
Studieperiode slut (31. dec 2024)
6. Lav en analyseplan
En analyseplan er et dokument, du skriver inden du ser på dine data. Det tvinger dig til at tage stilling til design, statistik og variable, før resultaterne farver dine beslutninger.
Brug STROBE-checklisten som skelet: STROBE Statement — checklists →
Pre-registrer din analyseplan på fx OSF — det er god videnskabelig praksis og kræves af mange tidsskrifter: Open Science Framework — registreringsskabeloner
7. Næste skridt
Når du har dit overblik på plads:
- Ny R-bruger? → Fase 2 — R: det allermest nødvendige
- Klar til DST-serveren? → Fase 3 — Log ind på DST
- Arbejder du på DARTER / projekt 708421? → Læs dette inden du starter: DARTER — oversigt og pipeline