Seite 1 von 1

Doppelte Schleife

BeitragVerfasst: Do 7. Feb 2013, 22:23
von dilling
Hallo,

ich möchte versch. Werte Winsorieren, jedoch nach Jahren gruppiert.
Für einen Wert bekomme ich die Lösung mit einer Schleife. Wenn ich es aber gleichzeitig mit mehreren Variablen (KZ1win KZ2win etc.) machen möchte wie unten beschrieben bekomme ich "no observations" als Fehler zurück..

foreach j in KZ1win KZ2win KZ3win KZ4win KZ5win {
forvalues i = 1980/2011 {
winsor `j' if year == `i', p(0.05) high gen(temp)
replace `j' = temp if year == `i'
drop temp
}
}

(die variablen enthalten alle Werte oder .)

Weiss jemand was schiefläuft?

VG

Re: Doppelte Schleife

BeitragVerfasst: Do 7. Feb 2013, 22:55
von daniel
Die Fehlermeldung impliziert, dass es in mindestens eniem Jahr für midestens eine Variable keine gültigen Fälle (i.e. != .) gibt. -set trace on- könnte Aufschluss bringen, um welche Kombination von Jahr und Variable es sich handelt.

Re: Doppelte Schleife

BeitragVerfasst: Fr 8. Feb 2013, 12:27
von dilling
Danke für die Antwort, war schonmal hilfreich. Ich habe jetzt gefunden woran er sich stört:

Die Variable KZ3 erhält für jedes Jahr mindestens 10 Werte (und sehr viele ".")
Bei den anderen Variablen sieht es ähnlich aus, jedoch rechnet Stata dort korrekt & rechnet mit den wenigen "echten" Werten die neuen, winsorierten Werte aus.

Ich verstehe echt das Problem nicht. Es sieht für mich eher wie ein Bug von Stata/ der winsor Funktion aus..

Oder gibts noch ne andere Idee? :)

Re: Doppelte Schleife

BeitragVerfasst: Fr 8. Feb 2013, 12:28
von dilling
ps: er gibt nur bei KZ3 den Error "0 values to be Winsorized aus" wenn ich die Variablen KZ1 etc.. einzeln durchlaufen lasse

Re: Doppelte Schleife

BeitragVerfasst: Fr 8. Feb 2013, 13:41
von daniel
Kannst Du ein reproduzierbares Beispiel erstellen? Der code von -winsor- ist relativ kurz und sieht nicht sehr anfällig für bugs aus.

Re: Doppelte Schleife

BeitragVerfasst: Fr 8. Feb 2013, 14:55
von dilling
Habe eben die Lösung selbst gefunden: Für winsorize muss ansch. abhängig vom Percentil eine gewisse Mindestanzahl von Werten vorhanden sein & für z.b. p(0.01) sind 15 Werte zu wenig..