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