Simulation mit Stata

Allgemeine Fragen rund um Statistik mit Stata.

Simulation mit Stata

Beitragvon dodothegoof » Fr 11. Mai 2012, 19:41

Ich möchte folgendes tun: Zuerst möchte ich eine Stichprobe ziehen (drawnorm) und von der Stichprobe den Mittelwert bilden. Diesen Vorgang möchte ich dann Mehrmals wiederholen, so dass ich am Ende eine Liste mehrer Mittelwerte habe und zum Schluss bilde ich von all diesen Mittelwerten ebenfalls wieder den Mittelwert. Klingt erst mal affig aber später soll das ganze aufgebohrt werden und es geht für mich erst mal darum die grundsätzliche Syntax für die Simulation zu verstehen.

Dies ist meine bisherige Syntax:
*Vorgegebener Mittelwert
sca M_q_s = 3
*Vorgegebene Standardabweichung
sca sd_q_s = (M_q_s + 2)/st_t
* Bestehendes Programm
program drop markt_s
program define markt_s, rclass
*ob dieser Schritt wirklich notwednig ist weiß ich nicht.
drop M_test
*Mittelwert und Standardabweichung explizit für die Ziehung
matrix m = (M_q_s)
matrix sd = (sd_q_s)
* Ziehen von 10.000 Werten
drawnorm q_s_test, n(10000) means(m) sds(sd)
* run the desired command
* Bilden des Mittelwertes
collapse (mean) M_test=q_s_test
end
* Mehrmaliges durchlaufen des Commands
simulate mean=M_test, reps(10): markt_s
* Bilden davon des Mittelwertes
collapse (mean) Final_mean=mean

Woran ich nun verzweifle. Ich habe es einmal durchlaufen lassen und da hat es geklappt. Wenn ich es nun wieder versuche werden mir dauernd Fehlermeldungen ausgespuckt. Wo ist der Fehler in der Syntax oder ist die ganze Syntax an sich Käse für das was ich machen will?
dodothegoof
 
Beiträge: 3
Registriert: Fr 11. Mai 2012, 19:22
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Simulation mit Stata

Beitragvon daniel » Sa 12. Mai 2012, 12:42

Ich habe noch nicht wirlich viele Simulationen in Stata gemacht, nur Kleinigkeiten, vielleicht kann ich ja dennoch behilflich sein. Dazu wäre es natürlich toll zu wissen, welche Fehlermeldungen dauernd ausgespuckt werden. I.d.R. sind die bei Stata nämlich recht spezifisch und informativ.

Ein erster unsystematischer Ansatz zur Syntax (von stilisitschen Fragen bzw. effizienter Programmierung sehe ich ab).

Du definierst die Standardabweichung als

sca sd_q_s = (M_q_s + 2)/st_t

aber <st_t> taucht zuvor im code gar nicht auf, ist also vermutlich leer.

Die Zeile

drop M_test

kann ebenfalls zu Fehlern führen, falls M_test nicht definiert ist.

Du definierst Dein Programm als r-class, es werden aber keinerlei Werte in r() zurückgegeben, sodass -simulate- auf keine Ergebnisse zurückgreifen kann.
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

Re: Simulation mit Stata

Beitragvon dodothegoof » Do 17. Mai 2012, 15:23

Die Variabe "st_t" ist definiert. Habe sie leider vergessen rüberzukopieren.
sca st_t = 1.96

ja das "rclass" steht da, weil Stata das in seinem Beispiel in der Hilfe benutzt. Das Problem für mich ist, dass ich nicht wirklich kapiere was diese r() Funktion macht. Wenn ich das richtig verstehe wird da irgendwas zwischengespeichert oder?

Wenn ich rclass weglasse und dann die Sache durchlaufen lassen, dann klappt sozusagen die erste der 10 Wiederholungen aber die folgenden bekomen ein Kreuz. Es klappt also nicht, dass Programm ein zweites Mal durchlaufen zu lassen bzw. beim zweiten Mal wird kein Wert ausgegeben.

Eine Fehlernummer wird leider nicht ausgegeben. Mit der zusätzlichen Info zu st_t sollte es aber möglich sein, dass ganze in Stata selbst durchlaufen zu lassen.

Ich benutze übrigens Stata 9.1
dodothegoof
 
Beiträge: 3
Registriert: Fr 11. Mai 2012, 19:22
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Simulation mit Stata

Beitragvon daniel » Do 17. Mai 2012, 16:45

Ich benutze übrigens Stata 9.1

Ungeachtet der andreen problem solltest Du dann mal auf 9.2 updaten (-update all-).

r-class Programme geben einen Wert zurück. -summarize- ist z.B. ein r-class Programm. Nach dem Du -summarize <varname>- eingegeben hast, kannst Du mittels -return list- alle Werte Anzeigen lassen, die -summarize- in r() zurückgibt (in r(mean) steht z.B. der Mittelwert).

Versuch mal am Ende Deines Programms die Zeile

Code: Alles auswählen
ret sca mean = M_test


einzubinden. Der -simulate- Aufruf sollte dann

simulate mean=r(mean), reps(10): markt_s

lauten.
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

Re: Simulation mit Stata

Beitragvon dodothegoof » Do 17. Mai 2012, 17:05

Danke noch mal deine Ausführungen zu Return, habe dann zum Glück doch noch eine Seite gefunden, die das auf Deutsch erklärt hat. Und habe es nun auch hinbekommen, dass zu rechnen was ich will.

Der Code lautet nun wie folgt:

program drop markt_s
program define markt_s, rclass
drop _all
matrix m = (M_q_s)
matrix sd = (sd_q_s)
drawnorm q_s_test, n(1000) means(m) sds(sd)
* run the desired command
summarize q_s_test
return sca M_test = r(mean)

end

simulate M_test2 = r(M_test), reps(10): markt_s

summarize M_test2
sca M_final = r(mean)
sca list M_final

Jetzt habe ich schon mal ne Funktionierende Version von der ausgehend ich meine Idee weiter verfeinern kann. Vermutlich werden sich dann schon wieder neue Fragen ergeben.
dodothegoof
 
Beiträge: 3
Registriert: Fr 11. Mai 2012, 19:22
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Statistik allgemein

Wer ist online?

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

cron