Merkmalsausprägungen finden, die nicht koexistieren

Deskriptive Statistiken mit Stata.

Merkmalsausprägungen finden, die nicht koexistieren

Beitragvon BenediktK » Mo 12. Sep 2022, 09:36

Guten Morgen :)
Ich suche eine automatisierte Möglichkeit um herauszufinden welche Ausprägungskombination zwischen zwei Variablen (über alle Variablen) eines Datensatzes nicht auftreten.
Dafür bin ich bisher wie folgt vorgegangen:

1. Dummyvariablen für alle Variablen erstellen, die neuen Variablen enthalten also je eine Ausprägung der Variablen:

tab VariableX, gen(VariableX)
tab VariableY, gen(VariableY)
(...)
tab VariableN, gen(VariableN)

2. Jeweils zwei der Dummyvariablen unterschiedlicher Variablen werden aufaddiert und in eine neue Variable geschrieben.

gen X1Y1 = VariableX1 + VariableY1
recode X1Y1 (2=1) (1=0) (0=0)
gen X1Y2 = VariableX1 + VariableY2
recode X1Y1 (2=1) (1=0) (0=0)
(...)
gen X1YN = VariableX1 + VariableYN
recode X1YN (2=1) (1=0) (0=0)

gen X2Y1 = VariableX2 + VariableY1
recode X1Y1 (2=1) (1=0) (0=0)
gen X2Y2 = VariableX2 + VariableY2
recode X2Y1 (2=1) (1=0) (0=0)
(...)
gen X2YN = VariableX1 + VariableYN
recode X2YN (2=1) (1=0) (0=0)
*Dies wird wiederholt mit allen Ausprägungen i,j und allen Variablen A-Z

3. Alle neuen Kombinationsvariablen werden mittels sum einzeln überprüft. Ist die Anzahl des gesamten Observationen gleich der Häufigkeit von 1, tritt die Ausprägungskombination im Datensatz nicht auf.

sum X1Y1
sum X2Y1
(...)

Die Vorgehensweise ist bei wenigen Variablen mit wenigen Ausprägungen machbar. Für Datensätze mit mehr Variablen, beziehungsweise mehr Ausprägungen pro Variablen steigt schnell der benötigte Schreibaufwand.
Ich vermute, dass man den 2. Schritt mit einer Foreach-Schleife lösen könnte, allerdings bin ich mit den multiplen Indizes überfordert. Es wäre schön, falls hier jemand helfen könnte.
Beste Grüße und vielen Dank!
Benedikt
BenediktK
 
Beiträge: 3
Registriert: Mo 12. Sep 2022, 07:32
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Merkmalsausprägungen finden, die nicht koexistieren

Beitragvon Staxa » Mo 12. Sep 2022, 11:12

Mh ob das der beste Weg ist? Eigentlich liefert der tab Befehl ja die Nullzellen direkt, man muss sie nur raussuchen. Ich habe da mal einen Befehl dafür geschrieben. Hier mit einem Setup:

Code: Alles auswählen
clear all
webuse nhanes2
replace race = 1 if race == 3 & region == 3
replace race = 3 if race == 2 & region == 1
tab race region


Wie wir sehen treten zwei Nullzellen auf in diesem Beispiel. Hier das Programm:

Code: Alles auswählen
cap program drop nullfinder
program define nullfinder
   args var1 var2
   qui tab `var1'
   local nrows = r(r)
   qui tab `var2'
   local ncols = r(r)
   tab `var1' `var2', matcell(res)
   *matrix list res
   forvalues r = 1/`nrows' {
      forvalue c = 1/`ncols' {
         if res[`r',`c'] == 0 {
            di "Leere Zelle gefunden!"
            preserve
            qui replace `var1' = `r' in 1
            qui replace `var2' = `c' in 1
            tab `var1' `var2' if `var1' == `r' & `var2' == `c'
            restore            
         }
      }
   }   
end

nullfinder region race

Die Anzeige ist etwas frickelig aber man sieht auf diese Weise direkt angezeigt welche Nullzellen bestehen. Dann muss man nur noch über alle Kombinationen loopen:


Code: Alles auswählen
ssc install tuples, replace
tuples sex race smsa region, min(2) max(2)
forvalues i = 1 / `ntuples' {
   nullfinder `tuple`i''
}
Stata für Anfänger: www.statabook.com
Staxa
 
Beiträge: 584
Registriert: Di 27. Feb 2018, 12:56
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Merkmalsausprägungen finden, die nicht koexistieren

Beitragvon BenediktK » Mo 12. Sep 2022, 11:33

Danke für die Hilfe! Das sieht sehr gut aus, gerade führt mein Stata eine längere Imputation durch, danach werde ich das mal versuchen und mich zurückmelden :)
BenediktK
 
Beiträge: 3
Registriert: Mo 12. Sep 2022, 07:32
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Merkmalsausprägungen finden, die nicht koexistieren

Beitragvon BenediktK » Mo 12. Sep 2022, 13:56

Super, das Programm läuft :) Nur kann ich Tuples nicht herunterladen, ich versuche mal das anderweitig in den Griff zu bekommen.
BenediktK
 
Beiträge: 3
Registriert: Mo 12. Sep 2022, 07:32
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Deskriptive Statistik

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste