Schleife von regression und alle koeffizienten speichern

Regressionsmodelle aller Art mit Stata.

Schleife von regression und alle koeffizienten speichern

Beitragvon Hans88 » Mi 9. Okt 2013, 19:03

hallo,
ich bräuchte hilfe bei folgender aufgabe für die uni:

ich soll aus einem datensatz willkürlich 100 obseravtionen aussuchen,
mit diesen 100 observationen eine regression durchführen und
die koeffizienten speichern. diesen vorgang muss ich 5000 mal wiederholen und
ein histogram der koeffizienten zeichnen.


mein ansatz bisher lautet:

use ....data
generate k=0
while k<=5000 {
bsample 100
regress x y
replace k=k+1
}
ich weiß jedoch nicht, wie ich die koeffizienten so speichern kann, dass ich nachher alle 5000 koeffizienten habe und ein histogram
daraus zeichnen kann. wäre super, wenn mir jemand sagen kann wie das geht


vielen dank für eure hilfe!
Hans88
 
Beiträge: 3
Registriert: Mo 7. Okt 2013, 20:42
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Schleife von regression und alle koeffizienten speichern

Beitragvon daniel » Do 10. Okt 2013, 13:14

Arbeite nicht mit -while-, das ist (i) langsam, (ii) gefährlich, weil man "endlos Schleifen" bauen kann. -foreach-, oder -forvalues- sind hier deutlich besser geeignet.

Der Zähler (k) sollte keine Variable sein, hier genügt ein local.

-bsample- zerstört den Datensatz. Nach dem ersten Durchlauf der Schleife sind nur noch 100 Beobachtungen übrig.

Dein -regress- Befehl sieht komisch aus, weil hier x die endogene Variable, y der Prädikator ist. Die übliche Notation ist umgekehrt.

Da die Koeffizienten (da hier nur ein Prädikator steht, nehme ich an, Du willst pro regression nur einen Koeffizienten) geplottet werden sollen, wüde ich diese in einer Variable speichern.

Es könnte etwa so aussehen:

Code: Alles auswählen
// load the dataset
u <foo>, clear

// check sufficient observations to store coefficients
if (c(N) < 5000) se obs 5000

// create variable for coefficient
g b = .

// run the regressions
forv j = 1/5000 {
    preserve // <- very slow, but will do the job
    bsample
    qui reg y x if (runiform())
    restore
    qui replace b = _b[x] in `j'
}
// histogram
hist b
Stata is an invented word, not an acronym, and should not appear with all letters capitalized: please write “Stata”, not “STATA”.
daniel
 
Beiträge: 1060
Registriert: Sa 1. Okt 2011, 17:20
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Regressionsmodelle

Wer ist online?

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