1:N
-Matching von F
ällen und Kontrollen:
1:N-Matching
Fällen
Propensity Score vs. PROC SQL
Andreas
Andreas Deckert
Deckert
Institute
Institute of
of Public
Public Health,
Health, Universität
Universität Heidelberg
Heidelberg
Übersicht
Matching
Problemstellung
Realisierung mit PROC SQL
Optimierung des Abgleichs mit PROC SQL
Realisierung mit Propensity Scores
Vergleich der Ergebnisse
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
01.03.2011
Was ist Matching?
Andreas Deckert, Institute of Public Health Heidelberg
Matching: Theorie
In epidemiologischen Fall-Kontroll-Studien ist Strukturgleichheit in
Fällen und Kontrollen für verzerrungsfreie Ergebnisse wichtig
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Matching: Theorie
In epidemiologischen Fall-Kontroll-Studien ist Strukturgleichheit in
Fällen und Kontrollen für verzerrungsfreie Ergebnisse wichtig
Methode zur Herstellung von Strukturgleichheit: Matching
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Matching: Theorie
In epidemiologischen Fall-Kontroll-Studien ist Strukturgleichheit in
Fällen und Kontrollen für verzerrungsfreie Ergebnisse wichtig
Methode zur Herstellung von Strukturgleichheit: Matching
Gruppen-Matching: Häufigkeiten von Personen mit bestimmten
Charakteristika sollen in Fall- und Kontrollgruppe gleich groß sein
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Matching: Theorie
In epidemiologischen Fall-Kontroll-Studien ist Strukturgleichheit in
Fällen und Kontrollen für verzerrungsfreie Ergebnisse wichtig
Methode zur Herstellung von Strukturgleichheit: Matching
Gruppen-Matching: Häufigkeiten von Personen mit bestimmten
Charakteristika sollen in Fall- und Kontrollgruppe gleich groß sein
Individuelles Matching: Zu jedem Fall wird individuell eine Kontrollperson mit gleich ausgeprägten Matching-Faktoren ausgewählt
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
1:N-Matching
1:N-matching: Erhöhen der statistischen Power
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
1:N-Matching
1:N-matching: Erhöhen der statistischen Power
Beispiel: Häufigkeit eines Faktors in der Kontrollgruppe 6%,
Hypothese: Differenz zur Fallgruppe (n = 300) mindestens 5% (OR=2)
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
1:N-Matching
1:N-matching: Erhöhen der statistischen Power
Beispiel: Häufigkeit eines Faktors in der Kontrollgruppe 6%,
Hypothese: Differenz zur Fallgruppe (n = 300) mindestens 5% (OR=2)
Power
0.95
0.90
0.85
0.80
0.75
0.70
0.65
0.60
1
2
3
4
5
6
7
8
9
10
1:N
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
1:N-Matching
1:N-matching: Erhöhen der statistischen Power
Beispiel: Häufigkeit eines Faktors in der Kontrollgruppe 6%,
Hypothese: Differenz zur Fallgruppe (n = 300) mindestens 5% (OR=2)
Power
0.95
PROC
PROC POWER;
POWER;
TWOSAMPLEFREQ
TWOSAMPLEFREQ
TEST
TEST == pchi
pchi
ALPHA
ALPHA == .05
.05
ODDSRATIO
ODDSRATIO == 22
REFPROPORTION
REFPROPORTION == 0.06
0.06
GROUPWEIGHTS
GROUPWEIGHTS == ((NN 1)
1)
NTOTAL
NTOTAL == 300+300*N
300+300*N
POWER
POWER == .;
.;
RUN;
RUN;
0.90
0.85
0.80
0.75
0.70
0.65
0.60
1
2
3
4
5
6
7
8
9
10
1:N
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
1:N-Matching
1:N-matching: Erhöhen der statistischen Power
Beispiel: Häufigkeit eines Faktors in der Kontrollgruppe 6%,
Hypothese: Differenz zur Fallgruppe (n = 300) mindestens 5% (OR=2)
Power
0.95
PROC
PROC POWER;
POWER;
TWOSAMPLEFREQ
TWOSAMPLEFREQ
TEST
TEST == pchi
pchi
ALPHA
ALPHA == .05
.05
ODDSRATIO
ODDSRATIO == 22
REFPROPORTION
REFPROPORTION == 0.06
0.06
GROUPWEIGHTS
GROUPWEIGHTS == ((NN 1)
1)
NTOTAL
NTOTAL == 300+300*N
300+300*N
POWER
POWER == .;
.;
RUN;
RUN;
0.90
0.85
0.80
0.75
0.70
0.65
0.60
1
2
3
4
5
6
7
8
9
10
1:N
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
1:N-Matching
1:N-matching: Erhöhen der statistischen Power
Beispiel: Häufigkeit eines Faktors in der Kontrollgruppe 6%,
Hypothese: Differenz zur Fallgruppe (n = 300) mindestens 5% (OR=2)
Power
0.95
PROC
PROC POWER;
POWER;
TWOSAMPLEFREQ
TWOSAMPLEFREQ
TEST
TEST == pchi
pchi
ALPHA
ALPHA == .05
.05
ODDSRATIO
ODDSRATIO == 22
REFPROPORTION
REFPROPORTION == 0.06
0.06
GROUPWEIGHTS
GROUPWEIGHTS == ((NN 1)
1)
NTOTAL
NTOTAL == 300+300*N
300+300*N
POWER
POWER == .;
.;
RUN;
RUN;
0.90
0.85
0.80
0.75
0.70
0.65
0.60
1
2
3
4
5
6
7
8
9
10
1:N
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Problemstellung (1)
Fall-Kontroll-Studie, 1:2 Matching nach Alter, Geschlecht und Zuzugsdatum (Erweiterung um weitere Variablen möglich)
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Problemstellung (1)
Fall-Kontroll-Studie, 1:2 Matching nach Alter, Geschlecht und Zuzugsdatum (Erweiterung um weitere Variablen möglich)
Fallgruppe n = 300, begrenzter Kontrollpool n = 900
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Problemstellung (1)
Fall-Kontroll-Studie, 1:2 Matching nach Alter, Geschlecht und Zuzugsdatum (Erweiterung um weitere Variablen möglich)
Fallgruppe n = 300, begrenzter Kontrollpool n = 900
Simulation zweier Szenarien:
- Szenario I: Altersverteilung in Fällen und Kontrollpool gleich,
Frauenanteil 50% in Fällen und Kontrollen
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Problemstellung (1)
Fall-Kontroll-Studie, 1:2 Matching nach Alter, Geschlecht und Zuzugsdatum (Erweiterung um weitere Variablen möglich)
Fallgruppe n = 300, begrenzter Kontrollpool n = 900
Simulation zweier Szenarien:
- Szenario I: Altersverteilung in Fällen und Kontrollpool gleich,
Frauenanteil 50% in Fällen und Kontrollen
- Szenario II: Altersverteilung in Fällen und Kontrollpool unterschiedlich,
30% Frauenanteil bei den Fällen,
50% Frauenanteil bei den möglichen Kontrollen
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Problemstellung (2)
Simulation Szenario I
n
200
Fälle
175
150
125
100
75
50
25
0
200
0-4
5-14 16-24 25-34 35-44 45-54 55-64 65-74 75-84 85+
Kontrollpool
175
150
125
100
75
50
25
0
0-4
5-14 16-24 25-34 35-44 45-54 55-64 65-74 75-84 85+
Altersklassen
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Problemstellung (2)
Simulation Szenario I
n
200
Fälle
175
Simulation Szenario II
200
150
150
125
125
100
100
75
75
50
50
25
25
0
200
Fälle
175
0
0-4
5-14 16-24 25-34 35-44 45-54 55-64 65-74 75-84 85+
Kontrollpool
175
200
0-4
5-14 16-24 25-34 35-44 45-54 55-64 65-74 75-84 85+
0-4
5-14 16-24 25-34 35-44 45-54 55-64 65-74 75-84 85+
175
150
150
125
125
100
100
75
75
50
50
25
25
Kontrollpool
0
0
0-4
5-14 16-24 25-34 35-44 45-54 55-64 65-74 75-84 85+
Altersklassen
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Problemstellung (4)
Anforderungen:
- Jede Kontrolle darf nur einmal verwendet werden
- Toleranzbereich (± 3 Jahre) für das Alters- und Zuzugs-Matching
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Problemstellung (4)
Anforderungen:
- Jede Kontrolle darf nur einmal verwendet werden
- Toleranzbereich (± 3 Jahre) für das Alters- und Zuzugs-Matching
Probleme:
- unterschiedliche Alters- und Geschlechtsverteilungen (Szenario II)
- Eine Kontrolle kann zu mehreren Fällen passen
- Es kann Fälle geben zu denen nur wenige Kontrollen passen
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Problemstellung (4)
Anforderungen:
- Jede Kontrolle darf nur einmal verwendet werden
- Toleranzbereich (± 3 Jahre) für das Alters- und Zuzugs-Matching
Probleme:
- unterschiedliche Alters- und Geschlechtsverteilungen (Szenario II)
- Eine Kontrolle kann zu mehreren Fällen passen
- Es kann Fälle geben zu denen nur wenige Kontrollen passen
Theoretisch ideale Lösung:
- Berechnung aller möglichen 1:N Fall-Kontroll-Kombinationen
- Auswahl der Kombination, bei der am meisten Fällen n Kontrollen
zugeordnet werden können.
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Lösung mit PROC SQL
Kawabata H, et. al. (2004): Using SAS ® to Match Cases for
Case Control Studies. SUGI 29, 173-29, Princeton, New Jersey
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Lösung mit PROC SQL
Kawabata H, et. al. (2004): Using SAS ® to Match Cases for
Case Control Studies. SUGI 29, 173-29, Princeton, New Jersey
Grundidee: Abgleich jedes Eintrages der Kontrollgruppe mit jedem Eintrag
der Fallgruppe mit PROC SQL entsprechend festgelegter Regeln.
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Lösung mit PROC SQL
Kawabata H, et. al. (2004): Using SAS ® to Match Cases for
Case Control Studies. SUGI 29, 173-29, Princeton, New Jersey
Grundidee: Abgleich jedes Eintrages der Kontrollgruppe mit jedem Eintrag
der Fallgruppe mit PROC SQL entsprechend festgelegter Regeln.
1:n-Matching mit Range:
- Abgleich mit PROC SQL
- Zählen der Kontrollen pro Fall
- Zuteilen einer Zufallszahl zu jedem Paar
- Sortieren nach Kontrollen
- Sortieren nach Anzahl Kontrollen pro Fall (innerhalb gleicher Kontrollen)
- Auswählen der ersten Kontrolle
- Sortieren nach Fällen
- Sortieren nach Zufallszahlen innerhalb gleicher Fälle
- Auswählen der ersten N Paare
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Datenaufbereitung
Datenstruktur: Eindeutige ID für jeden Eintrag in Kontrollen und Fällen,
Geburtsdatum, Geschlecht, Zuzugsdatum, …
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Datenaufbereitung
Datenstruktur: Eindeutige ID für jeden Eintrag in Kontrollen und Fällen,
Geburtsdatum, Geschlecht, Zuzugsdatum, …
1. Schritt: Toleranzbereiche für das Alter und den Zuzug festlegen
DATA Kontrollpool; SET Kontrollpool;
Geburtsjahr = year(Geburtsdatum);
min_Geburtsjahr = Geburtsjahr - 3;
max_Geburtsjahr = Geburtsjahr + 3;
min_Zuzugsjahr = Zuzugsjahr - 3;
max_Zuzugsjahr = Zuzugsjahr + 3;
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Datenaufbereitung
Datenstruktur: Eindeutige ID für jeden Eintrag in Kontrollen und Fällen,
Geburtsdatum, Geschlecht, Zuzugsdatum, …
1. Schritt: Toleranzbereiche für das Alter und den Zuzug festlegen
DATA Kontrollpool; SET Kontrollpool;
Geburtsjahr = year(Geburtsdatum);
min_Geburtsjahr = Geburtsjahr - 3;
max_Geburtsjahr = Geburtsjahr + 3;
min_Zuzugsjahr = Zuzugsjahr - 3;
max_Zuzugsjahr = Zuzugsjahr + 3;
DATA Fallgruppe; SET Fallgruppe;
Geburtsjahr = year(Geburtsdatum);
Zuzugsjahr = year(Zuzugsdatum);
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
SQL-Abfrage
2. Schritt: Verknüpfen der Tabellen mit PROC SQL
PROC SQL;
CREATE TABLE Abgleich AS SELECT
A.ID AS Fall_ID, B.ID AS Kontroll_ID,
A.Geburtsjahr AS Fall_Gebjahr,
B.Geburtsjahr AS Kontrolle_Gebjahr,
A.Zuzugsjahr AS Fall_Zuzug,
B.Zuzugsjahr AS Kontrolle_Zuzug,
A.Geschlecht AS Fall_Geschlecht,
B.Geschlecht AS Kontrolle_Geschlecht,
FROM Fallgruppe A, Kontrollpool B
WHERE ((A.Geburtsjahr between
B.min_Geburtsjahr AND B.max_Geburtsjahr)
AND (A.Zuzugsjahr between
B.min_Zuzugsjahr AND B.max_Zuzugsjahr)
AND A.Geschlecht = B.Geschlecht);
QUIT;
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
…und was dabei passiert
Fälle
ID
Jahr
z_zahl
1
1960
0.59496
2
1965
0.66743
3
1963
0.22011
4
1955
0.23779
Kontrollen
ID
Jahr
min
A
1962
1959 1965
B
1968
1965 1971
C
1966
1963 1969
D
1958
1955 1961
E
1963
1960 1966
F
1962
1959 1965
G
1959
1956 1962
01.03.2011
max
Andreas Deckert, Institute of Public Health Heidelberg
…und was dabei passiert
Fälle
ID
Jahr
z_zahl
1
1960
0.59496
2
1965
0.66743
3
1963
4
1955
Fälle
Kontrollen
ID
Jahr
z_zahl
ID
Jahr
1
1960
0.59496
D
1958
0.22011
E
1963
0.23779
F
1962
G
1959
A
1962
Kontrollen
1965
0.66743
Jahr
min
A
1962
1959 1965
B
1968
B
1968
1965 1971
C
1966
C
1966
1963 1969
A
1962
D
1958
1955 1961
E
1963
E
1963
1960 1966
4
1955
0.23779
D
1958
F
1962
1959 1965
…
…
…
…
…
G
1959
1956 1962
01.03.2011
max
2
ID
3
1963
0.22011
Andreas Deckert, Institute of Public Health Heidelberg
…und was dabei passiert
Fälle
ID
Jahr
z_zahl
1
1960
0.59496
2
1965
0.66743
3
1963
4
1955
Fälle
Kontrollen
ID
Jahr
z_zahl
ID
Jahr
1
1960
0.59496
D
1958
0.22011
E
1963
0.23779
F
1962
G
1959
A
1962
Kontrollen
1965
0.66743
Jahr
min
A
1962
1959 1965
B
1968
B
1968
1965 1971
C
1966
C
1966
1963 1969
A
1962
D
1958
1955 1961
E
1963
E
1963
1960 1966
4
1955
0.23779
D
1958
F
1962
1959 1965
…
…
…
…
…
G
1959
1956 1962
01.03.2011
max
2
ID
3
1963
0.22011
Andreas Deckert, Institute of Public Health Heidelberg
…und was dabei passiert
Fälle
ID
Jahr
z_zahl
1
1960
0.59496
2
1965
0.66743
3
1963
4
1955
Fälle
Kontrollen
ID
Jahr
z_zahl
ID
Jahr
1
1960
0.59496
D
1958
0.22011
E
1963
0.23779
F
1962
G
1959
A
1962
Kontrollen
1965
0.66743
Jahr
min
A
1962
1959 1965
B
1968
B
1968
1965 1971
C
1966
C
1966
1963 1969
A
1962
D
1958
1955 1961
E
1963
E
1963
1960 1966
4
1955
0.23779
D
1958
F
1962
1959 1965
…
…
…
…
…
G
1959
1956 1962
01.03.2011
max
2
ID
3
1963
0.22011
Andreas Deckert, Institute of Public Health Heidelberg
Zuordnung der Kontrollen
1:2-Matching, ohne Intervention:
Fälle
1:2-Matching, ideal:
Fälle
Kontrollen
Kontrollen
ID
Jahr
ID
Jahr
ID
Jahr
ID
Jahr
1
1960
D
1958
4
1955
D
1958
1
1960
E
1963
3
1963
A
1962
1
1960
F
1962
3
1963
E
1963
1
1960
G
1959
2
1965
A
1962
2
1965
A
1962
2
1965
B
1968
2
1965
B
1968
2
1965
C
1966
2
1965
C
1966
1
1960
D
1958
3
1963
A
1962
1
1960
E
1963
3
1963
E
1963
1
1960
F
1962
4
1955
D
1958
1
1960
G
1959
…
…
…
…
…
…
…
…
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Zuordnung der Kontrollen
1:2-Matching, ohne Intervention:
Fälle
1:2-Matching, ideal:
Fälle
Kontrollen
Kontrollen
ID
Jahr
ID
Jahr
4
1955
D
1958
1963
3
1963
A
1962
F
1962
3
1963
E
1963
1960
G
1959
2
1965
A
1962
2
1965
A
1962
2
1965
B
1968
2
1965
B
1968
2
1965
C
1966
2
1965
C
1966
1
1960
D
1958
3
1963
A
1962
1
1960
E
1963
3
1963
E
1963
1
1960
F
1962
4
1955
D
1958
1
1960
G
1959
…
…
…
…
…
…
…
…
ID
Jahr
ID
Jahr
1
1960
D
1958
1
1960
E
1
1960
1
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Zuordnung der Kontrollen
1:2-Matching, ohne Intervention:
Fälle
1:2-Matching, ideal:
Fälle
Kontrollen
Kontrollen
ID
Jahr
ID
Jahr
4
1955
D
1958
1963
3
1963
A
1962
F
1962
3
1963
E
1963
1960
G
1959
2
1965
A
1962
2
1965
A
1962
2
1965
B
1968
2
1965
B
1968
2
1965
C
1966
2
1965
C
1966
1
1960
D
1958
3
1963
A
1962
1
1960
E
1963
3
1963
E
1963
1
1960
F
1962
4
1955
D
1958
1
1960
G
1959
…
…
…
…
…
…
…
…
ID
Jahr
ID
Jahr
1
1960
D
1958
1
1960
E
1
1960
1
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Zuordnung der Kontrollen
1:2-Matching, ohne Intervention:
Fälle
1:2-Matching, ideal:
Fälle
Kontrollen
Kontrollen
ID
Jahr
ID
Jahr
4
1955
D
1958
3
1963
A
1962
1962
3
1963
E
1963
G
1959
2
1965
A
1962
1965
A
1962
2
1965
B
1968
2
1965
B
1968
2
1965
C
1966
2
1965
C
1966
1
1960
D
1958
3
1963
A
1962
1
1960
E
1963
3
1963
E
1963
1
1960
F
1962
4
1955
D
1958
1
1960
G
1959
…
…
…
…
…
…
…
…
ID
Jahr
ID
Jahr
1
1960
D
1958
1
1960
E
1963
1
1960
F
1
1960
2
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Zuordnung der Kontrollen
1:2-Matching, ohne Intervention:
Fälle
1:2-Matching, ideal:
Fälle
Kontrollen
Kontrollen
ID
Jahr
ID
Jahr
4
1955
D
1958
3
1963
A
1962
1962
3
1963
E
1963
G
1959
2
1965
A
1962
1965
A
1962
2
1965
B
1968
2
1965
B
1968
2
1965
C
1966
2
1965
C
1966
1
1960
D
1958
3
1963
A
1962
1
1960
E
1963
3
1963
E
1963
1
1960
F
1962
4
1955
D
1958
1
1960
G
1959
…
…
…
…
…
…
…
…
ID
Jahr
ID
Jahr
1
1960
D
1958
1
1960
E
1963
1
1960
F
1
1960
2
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Zuordnung der Kontrollen
1:2-Matching, ohne Intervention:
Fälle
1:2-Matching, ideal:
Fälle
Kontrollen
Kontrollen
ID
Jahr
ID
Jahr
4
1955
D
1958
3
1963
A
1962
1962
3
1963
E
1963
G
1959
2
1965
A
1962
1965
A
1962
2
1965
B
1968
2
1965
B
1968
2
1965
C
1966
2
1965
C
1966
1
1960
D
1958
3
1963
A
1962
1
1960
E
1963
3
1963
E
1963
1
1960
F
1962
4
1955
D
1958
1
1960
G
1959
…
…
…
…
…
…
…
…
ID
Jahr
ID
Jahr
1
1960
D
1958
1
1960
E
1963
1
1960
F
1
1960
2
01.03.2011
?
?
Andreas Deckert, Institute of Public Health Heidelberg
Zuordnung der Kontrollen
1:2-Matching, ohne Intervention:
Fälle
1:2-Matching, ideal:
Fälle
Kontrollen
Kontrollen
ID
Jahr
ID
Jahr
4
1955
D
1958
3
1963
A
1962
1962
3
1963
E
1963
G
1959
2
1965
A
1962
1965
A
1962
2
1965
B
1968
2
1965
B
1968
2
1965
C
1966
2
1965
C
1966
1
1960
D
1958
3
1963
A
1962
1
1960
E
1963
3
1963
E
1963
1
1960
F
1962
4
1955
D
1958
1
1960
G
1959
…
…
…
…
…
…
…
…
ID
Jahr
ID
Jahr
1
1960
D
1958
1
1960
E
1963
1
1960
F
1
1960
2
01.03.2011
?
?
Andreas Deckert, Institute of Public Health Heidelberg
Zuordnung der Kontrollen
1:2-Matching, ohne Intervention:
Fälle
1:2-Matching, ideal:
Fälle
Kontrollen
Kontrollen
ID
Jahr
ID
Jahr
4
1955
D
1958
3
1963
A
1962
1962
3
1963
E
1963
G
1959
2
1965
A
1962
1965
A
1962
2
1965
B
1968
2
1965
B
1968
2
1965
C
1966
2
1965
C
1966
1
1960
D
1958
3
1963
A
1962
1
1960
E
1963
3
1963
E
1963
1
1960
F
1962
4
1955
D
1958
1
1960
G
1959
…
…
…
…
…
…
…
…
ID
Jahr
ID
Jahr
1
1960
D
1958
1
1960
E
1963
1
1960
F
1
1960
2
01.03.2011
?
?
Andreas Deckert, Institute of Public Health Heidelberg
Zuordnung der Kontrollen
1:2-Matching, ohne Intervention:
Fälle
1:2-Matching, ideal:
Fälle
Kontrollen
Kontrollen
ID
Jahr
ID
Jahr
4
1955
D
1958
3
1963
A
1962
1962
3
1963
E
1963
G
1959
2
1965
A
1962
1965
A
1962
2
1965
B
1968
2
1965
B
1968
2
1965
C
1966
2
1965
C
1966
1
1960
D
1958
3
1963
A
1962
1
1960
E
1963
3
1963
E
1963
1
1960
F
1962
4
1955
D
1958
1
1960
G
1959
…
…
…
…
…
…
…
…
ID
Jahr
ID
Jahr
1
1960
D
1958
1
1960
E
1963
1
1960
F
1
1960
2
01.03.2011
?
?
Andreas Deckert, Institute of Public Health Heidelberg
Zählen der Kontrollen pro Fall
3. Schritt: Zählen der Anzahl gefundener Kontrollen pro Fall
PROC SORT DATA = Abgleich; BY Fall_ID; RUN;
DATA Abgleich_2 ( keep = Fall_ID Anzahl_K); SET Abgleich;
BY Fall_ID;
RETAIN Anzahl_K;
IF first.Fall_ID THEN Anzahl_K = 1;
ELSE Anzahl_K + 1;
IF last.Fall_ID THEN OUTPUT;
RUN;
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Zählen der Kontrollen pro Fall
3. Schritt: Zählen der Anzahl gefundener Kontrollen pro Fall
PROC SORT DATA = Abgleich; BY Fall_ID; RUN;
DATA Abgleich_2 ( keep = Fall_ID Anzahl_K); SET Abgleich;
BY Fall_ID;
RETAIN Anzahl_K;
IF first.Fall_ID THEN Anzahl_K = 1;
ELSE Anzahl_K + 1;
IF last.Fall_ID THEN OUTPUT;
RUN;
Abgleich_2
01.03.2011
Fall_ID
Anzahl_K
1
5
2
1
3
11
…
…
Andreas Deckert, Institute of Public Health Heidelberg
Verknüpfen und Sortieren
4. Schritt: Verknüpfen mit der Haupttabelle und sortieren der Fälle
nach der Anzahl der Kontrollen
DATA Abgleich_3;
MERGE Abgleich Abgleich_2;
BY Fall_ID;
z_zahl=uniform(seed);
RUN;
PROC SORT DATA = Abgleich_3;
BY Kontroll_ID Anzahl_K z_zahl;
RUN;
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Verknüpfen und Sortieren
4. Schritt: Verknüpfen mit der Haupttabelle und sortieren der Fälle
nach der Anzahl der Kontrollen
DATA Abgleich_3;
MERGE Abgleich Abgleich_2;
BY Fall_ID;
z_zahl=uniform(seed);
RUN;
PROC SORT DATA = Abgleich_3;
BY Kontroll_ID Anzahl_K z_zahl;
RUN;
Ab hier mehrmalige Wiederholung der
restlichen Prozedur mit unterschiedlichen Zufallszahlen!
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Verknüpfen und Sortieren
4. Schritt: Verknüpfen mit der Haupttabelle und sortieren der Fälle
nach der Anzahl der Kontrollen
DATA Abgleich_3;
MERGE Abgleich Abgleich_2;
BY Fall_ID;
z_zahl=uniform(seed);
RUN;
PROC SORT DATA = Abgleich_3;
BY Kontroll_ID Anzahl_K z_zahl;
RUN;
Ab hier mehrmalige Wiederholung der
restlichen Prozedur mit unterschiedlichen Zufallszahlen!
01.03.2011
Fälle
Kontrollen
ID Jahr z_zahl Anz_K ID
Jahr
3
1963
0.220
2
A
1962
2
1965
0.667
3
A
1962
7
1964
0.711
9
A
1962
6
1960
0.992
9
A
1962
2
1965
0.467
3
B
1968
8
1970
0.699
4
B
1968
3
1967
0.777
2
C
1966
2
1965
0.945
3
C
1966
…
…
…
…
…
Andreas Deckert, Institute of Public Health Heidelberg
Verknüpfen und Sortieren
4. Schritt: Verknüpfen mit der Haupttabelle und sortieren der Fälle
nach der Anzahl der Kontrollen
DATA Abgleich_3;
MERGE Abgleich Abgleich_2;
BY Fall_ID;
z_zahl=uniform(seed);
RUN;
PROC SORT DATA = Abgleich_3;
BY Kontroll_ID Anzahl_K z_zahl;
RUN;
Ab hier mehrmalige Wiederholung der
restlichen Prozedur mit unterschiedlichen Zufallszahlen!
01.03.2011
Fälle
Kontrollen
ID Jahr z_zahl Anz_K ID
Jahr
3
1963
0.220
2
A
1962
2
1965
0.667
3
A
1962
7
1964
0.711
9
A
1962
6
1960
0.992
9
A
1962
2
1965
0.467
3
B
1968
8
1970
0.699
4
B
1968
3
1967
0.777
2
C
1966
2
1965
0.945
3
C
1966
…
…
…
…
…
Andreas Deckert, Institute of Public Health Heidelberg
Verknüpfen und Sortieren
4. Schritt: Verknüpfen mit der Haupttabelle und sortieren der Fälle
nach der Anzahl der Kontrollen
DATA Abgleich_3;
MERGE Abgleich Abgleich_2;
BY Fall_ID;
z_zahl=uniform(seed);
RUN;
PROC SORT DATA = Abgleich_3;
BY Kontroll_ID Anzahl_K z_zahl;
RUN;
Ab hier mehrmalige Wiederholung der
restlichen Prozedur mit unterschiedlichen Zufallszahlen!
01.03.2011
Fälle
Kontrollen
ID Jahr z_zahl Anz_K ID
Jahr
3
1963
0.220
2
A
1962
2
1965
0.667
3
A
1962
7
1964
0.711
9
A
1962
6
1960
0.992
9
A
1962
2
1965
0.467
3
B
1968
8
1970
0.699
4
B
1968
3
1967
0.777
2
C
1966
2
1965
0.945
3
C
1966
…
…
…
…
…
Andreas Deckert, Institute of Public Health Heidelberg
Verknüpfen und Sortieren
4. Schritt: Verknüpfen mit der Haupttabelle und sortieren der Fälle
nach der Anzahl der Kontrollen
DATA Abgleich_3;
MERGE Abgleich Abgleich_2;
BY Fall_ID;
z_zahl=uniform(seed);
RUN;
PROC SORT DATA = Abgleich_3;
BY Kontroll_ID Anzahl_K z_zahl;
RUN;
Ab hier mehrmalige Wiederholung der
restlichen Prozedur mit unterschiedlichen Zufallszahlen!
01.03.2011
Fälle
Kontrollen
ID Jahr z_zahl Anz_K ID
Jahr
3
1963
0.220
2
A
1962
2
1965
0.667
3
A
1962
7
1964
0.711
9
A
1962
6
1960
0.992
9
A
1962
2
1965
0.467
3
B
1968
8
1970
0.699
4
B
1968
3
1967
0.777
2
C
1966
2
1965
0.945
3
C
1966
…
…
…
…
…
Andreas Deckert, Institute of Public Health Heidelberg
Jede Kontrolle nur einmal!
5. Schritt: Jeweils den ersten Eintrag zu jeder Kontrolle auswählen
Fälle
DATA Abgleich_4;
SET Abgleich_3;
BY Kontroll_ID;
IF first.Kontroll_ID;
RUN;
01.03.2011
Kontrollen
ID Jahr z_zahl Anz_K ID
Jahr
3
1963
0.220
2
A
1962
2
1965
0.667
3
A
1962
7
1964
0.711
5
A
1962
6
1960
0.992
11
A
1962
2
1965
0.467
3
B
1968
8
1970
0.699
4
B
1968
3
1967
0.777
2
C
1966
2
1965
0.945
3
C
1966
…
…
…
…
…
Andreas Deckert, Institute of Public Health Heidelberg
Jede Kontrolle nur einmal!
5. Schritt: Jeweils den ersten Eintrag zu jeder Kontrolle auswählen
Fälle
DATA Abgleich_4;
SET Abgleich_3;
BY Kontroll_ID;
IF first.Kontroll_ID;
RUN;
01.03.2011
Kontrollen
ID Jahr z_zahl Anz_K ID
Jahr
3
1963
0.220
2
A
1962
2
1965
0.667
3
A
1962
7
1964
0.711
5
A
1962
6
1960
0.992
11
A
1962
2
1965
0.467
3
B
1968
8
1970
0.699
4
B
1968
3
1967
0.777
2
C
1966
2
1965
0.945
3
C
1966
…
…
…
…
…
Andreas Deckert, Institute of Public Health Heidelberg
Jede Kontrolle nur einmal!
5. Schritt: Jeweils den ersten Eintrag zu jeder Kontrolle auswählen
Fälle
DATA Abgleich_4;
SET Abgleich_3;
BY Kontroll_ID;
IF first.Kontroll_ID;
RUN;
01.03.2011
Kontrollen
ID Jahr z_zahl Anz_K ID
Jahr
3
1963
0.220
2
A
1962
2
1965
0.667
3
A
1962
7
1964
0.711
5
A
1962
6
1960
0.992
11
A
1962
2
1965
0.467
3
B
1968
8
1970
0.699
4
B
1968
3
1967
0.777
2
C
1966
2
1965
0.945
3
C
1966
…
…
…
…
…
Andreas Deckert, Institute of Public Health Heidelberg
Jede Kontrolle nur einmal!
5. Schritt: Jeweils den ersten Eintrag zu jeder Kontrolle auswählen
Fälle
DATA Abgleich_4;
SET Abgleich_3;
BY Kontroll_ID;
IF first.Kontroll_ID;
RUN;
01.03.2011
Kontrollen
ID Jahr z_zahl Anz_K ID
Jahr
3
1963
0.220
2
A
1962
2
1965
0.667
3
A
1962
7
1964
0.711
5
A
1962
6
1960
0.992
11
A
1962
2
1965
0.467
3
B
1968
8
1970
0.699
4
B
1968
3
1967
0.777
2
C
1966
2
1965
0.945
3
C
1966
…
…
…
…
…
Andreas Deckert, Institute of Public Health Heidelberg
Jede Kontrolle nur einmal!
5. Schritt: Jeweils den ersten Eintrag zu jeder Kontrolle auswählen
Fälle
DATA Abgleich_4;
SET Abgleich_3;
BY Kontroll_ID;
IF first.Kontroll_ID;
RUN;
01.03.2011
Kontrollen
ID Jahr z_zahl Anz_K ID
Jahr
3
1963
0.220
2
A
1962
2
1965
0.667
3
A
1962
7
1964
0.711
5
A
1962
6
1960
0.992
11
A
1962
2
1965
0.467
3
B
1968
8
1970
0.699
4
B
1968
3
1967
0.777
2
C
1966
2
1965
0.945
3
C
1966
…
…
…
…
…
Andreas Deckert, Institute of Public Health Heidelberg
Jeder Fall zweimal!
6. Schritt: Zufällige Auswahl von N Kontrollen pro Fall
PROC SORT DATA = Abgleich_4;
BY Fall_ID z_zahl;
RUN;
DATA Final; SET Abgleich_4;
BY Fall_ID;
RETAIN num;
IF first.Fall_ID THEN num = 1;
IF num le N THEN DO;
OUTPUT Final;
num + 1;
END;
RUN;
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Jeder Fall zweimal!
6. Schritt: Zufällige Auswahl von N Kontrollen pro Fall
PROC SORT DATA = Abgleich_4;
BY Fall_ID z_zahl;
RUN;
DATA Final; SET Abgleich_4;
BY Fall_ID;
RETAIN num;
IF first.Fall_ID THEN num = 1;
IF num le N THEN DO;
OUTPUT Final;
num + 1;
END;
RUN;
Letzter Schritt: Wiederholung ab Schritt 4 mit neuen Zufallszahlen,
Auswählen der “Final”-Tabelle mit den meisten doppelten Zuordnungen!
(“Final” enthält auch Fälle mit nur einer gefundenen Kontrolle)
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Ergebnis (PROC SLQ)
300 Fälle, 900 Kontrollen, 1:2 Matching nach Alter, Zuzug, Geschlecht
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Ergebnis (PROC SLQ)
300 Fälle, 900 Kontrollen, 1:2 Matching nach Alter, Zuzug, Geschlecht
Szenario 1: gleiche Altersverteilung
Zu 131 Fällen wurde keine Kontrolle gefunden!
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Ergebnis (PROC SLQ)
300 Fälle, 900 Kontrollen, 1:2 Matching nach Alter, Zuzug, Geschlecht
Szenario 1: gleiche Altersverteilung
Zu 131 Fällen wurde keine Kontrolle gefunden!
Szenario 2: ungleiche Altersverteilung, Fälle 30% Frauen
Zu 144 Fällen wurde keine Kontrolle gefunden!
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
…ok, aber sooo schlecht?
Sortieren
Fälle
ID
z
1 0.02
4 0.66
5 0.71
6 0.99
1 0.12
8 0.44
1 0.67
7 0.86
9 0.33
1 0.72
1 0.22
4 0.35
6 0.49
1 0.54
7 0.59
11 0.99
#K
8
8
15
21
8
10
8
9
1
8
8
8
21
8
9
17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
Andreas Deckert, Institute of Public Health Heidelberg
…ok, aber sooo schlecht?
Sortieren
Fälle
ID
z
1 0.02
4 0.66
5 0.71
6 0.99
1 0.12
8 0.44
1 0.67
7 0.86
9 0.33
1 0.72
1 0.22
4 0.35
6 0.49
1 0.54
7 0.59
11 0.99
#K
8
8
15
21
8
10
8
9
1
8
8
8
21
8
9
17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
first.Kontroll_ID
Fälle
ID
z
1 0.02
1 0.12
1 0.67
1 0.22
1 0.54
9 0.33
#K
8
8
8
8
8
1
K
ID
A
B
C
E
F
D
Andreas Deckert, Institute of Public Health Heidelberg
…ok, aber sooo schlecht?
Sortieren
Fälle
ID
z
1 0.02
4 0.66
5 0.71
6 0.99
1 0.12
8 0.44
1 0.67
7 0.86
9 0.33
1 0.72
1 0.22
4 0.35
6 0.49
1 0.54
7 0.59
11 0.99
#K
8
8
15
21
8
10
8
9
1
8
8
8
21
8
9
17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
first.Kontroll_ID
Fälle
ID
z
1 0.02
1 0.12
1 0.67
1 0.22
1 0.54
9 0.33
#K
8
8
8
8
8
1
K
ID
A
B
C
E
F
D
Ergebnis
Fälle
ID
z
1 0.02
1 0.12
9 0.33
#K
8
8
1
K
ID
A
B
D
Andreas Deckert, Institute of Public Health Heidelberg
…ok, aber sooo schlecht?
Sortieren
Fälle
ID
z
1 0.02
4 0.66
5 0.71
6 0.99
1 0.12
8 0.44
1 0.67
7 0.86
9 0.33
1 0.72
1 0.22
4 0.35
6 0.49
1 0.54
7 0.59
11 0.99
#K
8
8
15
21
8
10
8
9
1
8
8
8
21
8
9
17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
Ergebnis
Fälle
ID
z
1 0.02
1 0.12
9 0.33
Verlust
Fälle
ID
z
7 0.86
4 0.35
7 0.59
first.Kontroll_ID
Fälle
ID
z
1 0.02
1 0.12
1 0.67
1 0.22
1 0.54
9 0.33
#K
8
8
8
8
8
1
K
ID
A
B
C
E
F
D
#K
8
8
1
K
ID
A
B
D
#K
7
8
9
K
ID
C
E
F
In diesem Beispiel wird die Hälfte der möglichen
Paare unterschlagen!
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
ID
1
1
1
9
1
1
Fälle
z #K
0.02 8
0.12 8
0.67 2
0.33 1
0.22 8
0.54 8
K
ID
A
B
C
D
E
F
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
ID
1
1
1
9
1
1
Fälle
z #K
0.02 8
0.12 8
0.67 2
0.33 1
0.22 8
0.54 8
K
ID
A
B
C
D
E
F
ID
1
1
1
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.22 2
0.54 8
0.67 8
0.33 1
K
ID
A
B
E
F
C
D
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
ID
1
1
1
9
1
1
Fälle
z #K
0.02 8
0.12 8
0.67 2
0.33 1
0.22 8
0.54 8
K
ID
A
B
C
D
E
F
ID
1
1
1
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.22 2
0.54 8
0.67 8
0.33 1
K
ID
A
B
E
F
C
D
ID
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.33 1
K
ID
A
B
D
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
ID
1
1
1
9
1
1
Fälle
z #K
0.02 8
0.12 8
0.67 2
0.33 1
0.22 8
0.54 8
K
ID
A
B
C
D
E
F
ID
1
1
1
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.22 2
0.54 8
0.67 8
0.33 1
K
ID
A
B
E
F
C
D
ID
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.33 1
K
ID
A
B
D
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
ID
1
1
1
9
1
1
Fälle
z #K
0.02 8
0.12 8
0.67 2
0.33 1
0.22 8
0.54 8
K
ID
A
B
C
D
E
F
ID
1
1
1
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.22 2
0.54 8
0.67 8
0.33 1
K
ID
A
B
E
F
C
D
ID
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.33 1
K
ID
A
B
D
X 100
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
ID
1
1
1
9
1
1
Fälle
z #K
0.02 8
0.12 8
0.67 2
0.33 1
0.22 8
0.54 8
K
ID
A
B
C
D
E
F
ID
1
1
1
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.22 2
0.54 8
0.67 8
0.33 1
K
ID
A
B
E
F
C
D
ID
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.33 1
K
ID
A
B
D
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
ID
1
1
1
9
1
1
Fälle
z #K
0.02 8
0.12 8
0.67 2
0.33 1
0.22 8
0.54 8
K
ID
A
B
C
D
E
F
ID
1
1
1
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.22 2
0.54 8
0.67 8
0.33 1
K
ID
A
B
E
F
C
D
ID
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.33 1
K
ID
A
B
D
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
ID
1
1
1
9
1
1
Fälle
z #K
0.02 8
0.12 8
0.67 2
0.33 1
0.22 8
0.54 8
K
ID
A
B
C
D
E
F
ID
1
1
1
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.22 2
0.54 8
0.67 8
0.33 1
K
ID
A
B
E
F
C
D
ID
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.33 1
K
ID
A
B
D
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
ID
1
1
1
9
1
1
Fälle
z #K
0.02 8
0.12 8
0.67 2
0.33 1
0.22 8
0.54 8
K
ID
A
B
C
D
E
F
ID
1
1
1
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.22 2
0.54 8
0.67 8
0.33 1
K
ID
A
B
E
F
C
D
ID
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.33 1
K
ID
A
B
D
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
ID
1
1
1
9
1
1
Fälle
z #K
0.02 8
0.12 8
0.67 2
0.33 1
0.22 8
0.54 8
K
ID
A
B
C
D
E
F
ID
7
4
7
Fälle
z #K
0.86 9
0.35 8
0.59 9
K
ID
C
E
F
ID
1
1
1
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.22 2
0.54 8
0.67 8
0.33 1
K
ID
A
B
E
F
C
D
ID
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.33 1
K
ID
A
B
D
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
ID
1
1
1
9
1
1
Fälle
z #K
0.02 8
0.12 8
0.67 2
0.33 1
0.22 8
0.54 8
K
ID
A
B
C
D
E
F
ID
7
4
7
Fälle
z #K
0.86 9
0.35 8
0.59 9
K
ID
C
E
F
ID
1
1
1
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.22 2
0.54 8
0.67 8
0.33 1
K
ID
A
B
E
F
C
D
ID
7
7
4
Fälle
z #K
0.59 9
0.86 9
0.35 8
K
ID
F
C
E
ID
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.33 1
K
ID
A
B
D
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
ID
1
1
1
9
1
1
Fälle
z #K
0.02 8
0.12 8
0.67 2
0.33 1
0.22 8
0.54 8
K
ID
A
B
C
D
E
F
ID
7
4
7
Fälle
z #K
0.86 9
0.35 8
0.59 9
K
ID
C
E
F
ID
1
1
1
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.22 2
0.54 8
0.67 8
0.33 1
K
ID
A
B
E
F
C
D
ID
7
7
4
Fälle
z #K
0.59 9
0.86 9
0.35 8
K
ID
F
C
E
ID
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.33 1
7 0.59 9
7 0.86 9
4 0.35 8
K
ID
A
B
D
C
F
E
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
ID
1
1
1
9
1
1
Fälle
z #K
0.02 8
0.12 8
0.67 2
0.33 1
0.22 8
0.54 8
K
ID
A
B
C
D
E
F
ID
7
4
7
Fälle
z #K
0.86 9
0.35 8
0.59 9
K
ID
C
E
F
ID
1
1
1
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.22 2
0.54 8
0.67 8
0.33 1
K
ID
A
B
E
F
C
D
ID
7
7
4
Fälle
z #K
0.59 9
0.86 9
0.35 8
K
ID
F
C
E
ID
1
1
9
7
7
4
Fälle
z #K
0.02 8
0.12 8
0.33 1
0.59 9
0.86 9
0.35 8
7 0.59 9
7 0.86 9
4 0.35 8
K
ID
A
B
D
F
C
E
C
F
E
Andreas Deckert, Institute of Public Health Heidelberg
PROC SLQ: Modifikation
A
Fälle
ID z # K
1 0.02 8
4 0.66 8
5 0.71 15
6 0.99 21
1 0.12 8
8 0.44 10
1 0.67 2
7 0.86 9
9 0.33 1
1 0.72 8
1 0.22 8
4 0.35 8
6 0.49 21
1 0.54 8
7 0.59 9
11 0.99 17
01.03.2011
K
ID
A
A
A
A
B
B
C
C
D
D
E
E
E
F
F
F
ID
1
1
1
9
1
1
Fälle
z #K
0.02 8
0.12 8
0.67 2
0.33 1
0.22 8
0.54 8
K
ID
A
B
C
D
E
F
ID
7
4
7
Fälle
z #K
0.86 9
0.35 8
0.59 9
K
ID
C
E
F
ID
1
1
1
1
1
9
Fälle
z #K
0.02 8
0.12 8
0.22 2
0.54 8
0.67 8
0.33 1
K
ID
A
B
E
F
C
D
ID
7
7
4
Fälle
z #K
0.59 9
0.86 9
0.35 8
K
ID
F
C
E
ID
1
1
9
7
7
4
Fälle
z #K
0.02 8
0.12 8
0.33 1
0.59 9
0.86 9
0.35 8
7 0.59 9
7 0.86 9
4 0.35 8
K
ID
A
B
D
F
C
E
C
F
E
do until A = { }
Andreas Deckert, Institute of Public Health Heidelberg
Macro-Umsetzung (1)
… 6. Schritt: Anwenden des Macros
%MACRO Optimierung(TabIn=, TabOut=, caseID=, controlID=, numControls=, zzahl=);
DATA _reduction; SET &TabIn.; RUN;
PROC SQL NOPRINT;
SELECT COUNT(*) INTO :_count
FROM &TabIn.;
QUIT;
%DO %UNTIL (&_count. = %SYSEVALF(0));
...
...
...
%END;
%MEND Optimierung;
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Macro-Umsetzung (1)
… 6. Schritt: Anwenden des Macros
%MACRO Optimierung(TabIn=, TabOut=, caseID=, controlID=, numControls=, zzahl=);
DATA _reduction; SET &TabIn.; RUN;
PROC SQL NOPRINT;
SELECT COUNT(*) INTO :_count
FROM &TabIn.;
QUIT;
%DO %UNTIL (&_count. = %SYSEVALF(0));
...
...
...
%END;
%MEND Optimierung;
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Macro-Umsetzung (2)
%MACRO Optimierung(TabIn=, TabOut=, caseID=, controlID=, numControls=, zzahl=);
...
%DO %UNTIL (&_count. = %SYSEVALF(0));
PROC SORT DATA =_reduction; BY &controlID. &numControls. &zzahl.; RUN;
DATA _set1; SET _reduction;
BY &controlID.;
IF first.&controlID.;
RUN;
PROC SORT DATA = _set1; BY &caseID.; RUN;
DATA _set2; SET _set1;
BY &caseID.;
IF (first.&caseID. or last.&caseID.); /*1:2-Matching*/
RUN;
...
%END;
%MEND Optimierung;
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Macro-Umsetzung (3)
%MACRO Optimierung(TabIn=, TabOut=, caseID=, controlID=, numControls=, zzahl=);
...
%DO %UNTIL (&_count. = %SYSEVALF(0));
...
PROC APPEND BASE = &TabOut. DATA =_set2; RUN;
PROC SORT DATA = _reduction; BY &controlID.; RUN;
PROC SORT DATA = _set2; BY &controlID.; RUN;
DATA _reduction; MERGE _reduction _set2 (in = b keep = &controlID.);
BY &controlID.;
IF not b;
RUN;
...
%END;
%MEND Optimierung;
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Macro-Umsetzung (4)
%MACRO Optimierung(TabIn=, TabOut=, caseID=, controlID=, numControls=, zzahl=);
...
%DO %UNTIL (&_count. = %SYSEVALF(0));
...
+
PROC SORT DATA = _reduction; BY &caseID.; RUN;
PROC SORT DATA = _set2; BY &caseID.; RUN;
DATA _reduction; MERGE _reduction _set2 (in = b keep = &caseID.);
BY &caseID.;
IF not b;
RUN;
PROC SQL NOPRINT; SELECT COUNT(*) INTO :_count FROM _reduction; QUIT;
%END;
%MEND Optimierung;
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Macro-Umsetzung (4)
%MACRO Optimierung(TabIn=, TabOut=, caseID=, controlID=, numControls=, zzahl=);
...
%DO %UNTIL (&_count. = %SYSEVALF(0));
...
+
PROC SORT DATA = _reduction; BY &caseID.; RUN;
PROC SORT DATA = _set2; BY &caseID.; RUN;
DATA _reduction; MERGE _reduction _set2 (in = b keep = &caseID.);
BY &caseID.;
IF not b;
RUN;
PROC SQL NOPRINT; SELECT COUNT(*) INTO :_count FROM _reduction; QUIT;
%END;
%MEND Optimierung;
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Ergebnis (PROC SLQ modifiziert)
300 Fälle, 900 Kontrollen, 1:2 Matching nach Alter, Zuzug, Geschlecht
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Ergebnis (PROC SLQ modifiziert)
300 Fälle, 900 Kontrollen, 1:2 Matching nach Alter, Zuzug, Geschlecht
Szenario 1: gleiche Altersverteilung
Zu 2 Fällen wurde keine Kontrolle gefunden!
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Ergebnis (PROC SLQ modifiziert)
300 Fälle, 900 Kontrollen, 1:2 Matching nach Alter, Zuzug, Geschlecht
Szenario 1: gleiche Altersverteilung
Zu 2 Fällen wurde keine Kontrolle gefunden!
Szenario 2: ungleiche Altersverteilung, Fälle 30% Frauen
Zu 74 Fällen wurde keine Kontrolle gefunden!
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Lösung mit Propensity Scores
Parsons LS, et. al. (2004): Performing a 1:N Case-Control Match
on Propensity Score. SUGI 29, 165-29, Seattle, Washington
Für jede Person wird die Vorhersage-Wahrscheinlichkeit berechnet,
aufgrund der individuellen Variablen-Struktur ein Fall zu werden,
d.h. Kontrollen mit ähnlicher Struktur erhalten ähnliche Wahrscheinlichkeiten wie vergleichbare Fälle.
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Lösung mit Propensity Scores
Parsons LS, et. al. (2004): Performing a 1:N Case-Control Match
on Propensity Score. SUGI 29, 165-29, Seattle, Washington
Für jede Person wird die Vorhersage-Wahrscheinlichkeit berechnet,
aufgrund der individuellen Variablen-Struktur ein Fall zu werden,
d.h. Kontrollen mit ähnlicher Struktur erhalten ähnliche Wahrscheinlichkeiten wie vergleichbare Fälle.
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Logistisches Modell
Anforderung: Geschlecht darf zwischen Fall und Kontrollen nicht variieren
Zwei getrennte Modelle für Frauen und Männer!
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Logistisches Modell
Anforderung: Geschlecht darf zwischen Fall und Kontrollen nicht variieren
Zwei getrennte Modelle für Frauen und Männer!
PROC LOGISTIC DATA = Frauen;
MODEL F_K = Alter Zuzug/
SELECTION = NONE RISKLIMITS LACKFIT RSQUARE PARMLABEL;
OUTPUT OUT = Propensity_f PROB = prob;
RUN;
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Logistisches Modell
Anforderung: Geschlecht darf zwischen Fall und Kontrollen nicht variieren
Zwei getrennte Modelle für Frauen und Männer!
PROC LOGISTIC DATA = Frauen;
MODEL F_K = Alter Zuzug/
SELECTION = NONE RISKLIMITS LACKFIT RSQUARE PARMLABEL;
OUTPUT OUT = Propensity_f PROB = prob;
RUN;
F_K
K
K
K
F
F
01.03.2011
sex
f
f
m
m
f
Alter
20
23
38
45
20
Zuzug
2008
2007
1993
1999
2008
p
0.2453482
0.2456677
0.2238991
0.2269100
0.2453489
Andreas Deckert, Institute of Public Health Heidelberg
Logistisches Modell
Anforderung: Geschlecht darf zwischen Fall und Kontrollen nicht variieren
Zwei getrennte Modelle für Frauen und Männer!
PROC LOGISTIC DATA = Frauen;
MODEL F_K = Alter Zuzug/
SELECTION = NONE RISKLIMITS LACKFIT RSQUARE PARMLABEL;
OUTPUT OUT = Propensity_f PROB = prob;
RUN;
F_K
K
K
K
F
F
01.03.2011
sex
f
f
m
m
f
Alter
20
23
38
45
20
Zuzug
2008
2007
1993
1999
2008
p
0.2453482
0.2456677
0.2238991
0.2269100
0.2453489
Andreas Deckert, Institute of Public Health Heidelberg
Logistisches Modell
Anforderung: Geschlecht darf zwischen Fall und Kontrollen nicht variieren
Zwei getrennte Modelle für Frauen und Männer!
PROC LOGISTIC DATA = Frauen;
MODEL F_K = Alter Zuzug/
SELECTION = NONE RISKLIMITS LACKFIT RSQUARE PARMLABEL;
OUTPUT OUT = Propensity_f PROB = prob;
RUN;
F_K
K
K
K
F
F
01.03.2011
sex
f
f
m
m
f
Alter
20
23
38
45
20
Zuzug
2008
2007
1993
1999
2008
p
0.2453482
0.2456677
0.2238991
0.2269100
0.2453489
Andreas Deckert, Institute of Public Health Heidelberg
Logistisches Modell
Anforderung: Geschlecht darf zwischen Fall und Kontrollen nicht variieren
Zwei getrennte Modelle für Frauen und Männer!
PROC LOGISTIC DATA = Frauen;
MODEL F_K = Alter Zuzug/
SELECTION = NONE RISKLIMITS LACKFIT RSQUARE PARMLABEL;
OUTPUT OUT = Propensity_f PROB = prob;
RUN;
F_K
K
K
K
F
F
01.03.2011
sex
f
f
m
m
f
Alter
20
23
38
45
20
Zuzug
2008
2007
1993
1999
2008
p
0.2453482
0.2456677
0.2238991
0.2269100
0.2453489
Andreas Deckert, Institute of Public Health Heidelberg
Logistisches Modell
Anforderung: Geschlecht darf zwischen Fall und Kontrollen nicht variieren
Zwei getrennte Modelle für Frauen und Männer!
PROC LOGISTIC DATA = Frauen;
MODEL F_K = Alter Zuzug/
SELECTION = NONE RISKLIMITS LACKFIT RSQUARE PARMLABEL;
OUTPUT OUT = Propensity_f PROB = prob;
RUN;
F_K
K
K
K
F
F
sex
f
f
m
m
f
Alter
20
23
38
45
20
Zuzug
2008
2007
1993
1999
2008
p
0.2453482
0.2456677
0.2238991
0.2269100
0.2453489
Extremfall:
Danach Ausschluss der “falschen Socken” (nachträgliche Begrenzung)
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Ergebnis (Propensity Score)
300 Fälle, 900 Kontrollen, 1:2 Matching nach Alter, Zuzug, Geschlecht
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Ergebnis (Propensity Score)
300 Fälle, 900 Kontrollen, 1:2 Matching nach Alter, Zuzug, Geschlecht
Szenario 1: gleiche Altersverteilung
Zu 110 Fällen wurde keine Kontrolle gefunden!
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Ergebnis (Propensity Score)
300 Fälle, 900 Kontrollen, 1:2 Matching nach Alter, Zuzug, Geschlecht
Szenario 1: gleiche Altersverteilung
Zu 110 Fällen wurde keine Kontrolle gefunden!
Szenario 2: ungleiche Altersverteilung, Fälle 30% Frauen
Zu 220 Fällen wurde keine Kontrolle gefunden!
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Zusammenfassung
2K
1K
keine
2K
1K
keine
Gleiche
Altersverteil.
300 Fälle, 10.000 Kontrollen
PROC SQL*
146
23
131
186
1
113
PROC SQL
modifiziert
273
25
2
298
2
0
Propensity
Score
72
118
110
288
8
4
Ungleiche
Altersverteil.
300 Fälle, 900 Kontrollen
PROC SQL*
123
33
144
173
2
125
PROC SQL
modifiziert
169
57
74
297
3
0
Propensity
Score
32
48
220
253
35
12
* jeweils 500 Durchläufe mit variierten Zufallszahlen
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg
Vielen Dank für Ihre Aufmerksamkeit!
Kawabata H, et. al. Using SAS ® to Match Cases for Case
Control Studies. SUGI 29, 173-29, Princeton, New Jersey
Parsons LS, et. al. Performing a 1:N Case-Control Match on
Propensity Score. SUGI 29, 165-29, Seattle, Washington
01.03.2011
Andreas Deckert, Institute of Public Health Heidelberg