margins-Befehl

Fragen zu Stata Syntax und Do-Files.

margins-Befehl

Beitragvon Pfund » So 9. Jun 2013, 11:22

Hallo zusammen

Um meinen Interaktionsterm zu interpretieren möchte ich die marginalen Effekte benutzen. Dazu hab ich zuerst eine normale Regression durchgeführt. Anschliessend wollte ich mit margins den Effekt ablesen.

Mein Interaktionsterm setzt sich aus einer Dummyvariable und einer kontinuierlichen Variable zusammen.

das sieht dann etwa so aus: margins, dydx(nfdimean) at (hinatres10mean=(0))

nfdimean ist die kontinuierliche Variable der Interaktion und hinatres10mean die dummy.
Damit ich den Effekt sehe hab ich die dummy auf 0 gesetzt. D.h. in diesem Falle dass alle Länder die natürliche Ressourcen über einem bestimmten Anteil besitzen haben hinatress10mean ==1 die darunter hinatres10mean==0

Das Problem ist, dass wenn ich den Befehl so wie oben eingebe das genau gleiche Resulata auch rauskommt wenn ich at(hinatres10mean=1) eingebe.

Das macht aber überhaupt kein Sinn. Hat jemand eine Idee was ich falsch gemacht haben könnte?? Die Variable hinatres10mean wurde wie folgt gebildet.

gen hinatres10mean=0
replace hinatres10mean=1 if natresmean>=10
Pfund
 
Beiträge: 19
Registriert: Sa 4. Mai 2013, 14:57
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: margins-Befehl

Beitragvon daniel » So 9. Jun 2013, 11:53

Wieso willst Du zwei getrennte -margins- Befehle? Ich denke, was Du willst, wäre eher

Code: Alles auswählen
margins hinatreas10mean ,dydx(nfdimean)


Das ändert aber an Deinem Problem nichts (oder sollte zumindest nichts ändern), was nach eine Codierfehler aussieht. Wie sieht denn der Regressionsbefehl aus? Vielleicht ist auch dort etwas schief gelaufen.
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: margins-Befehl

Beitragvon Pfund » So 9. Jun 2013, 12:07

Die Regression sieht so aus:

xtreg cpimean nfdimean hinatres10_fdimean hinatres10mean lpopmean ipolity2mean growthmean trademean, fe vce(robust)

Und aus dieser Regression möchte ich dann meinen Interaktionsterm "hinatres10_fdimean" interpretieren.
Pfund
 
Beiträge: 19
Registriert: Sa 4. Mai 2013, 14:57
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: margins-Befehl

Beitragvon Pfund » So 9. Jun 2013, 12:09

Und ich wollte natürlich nur ein margins-Befehl durchführen. aber ich habs zur Kontrolle auch noch mit ==0 gemacht umzusehen was sich dann ändern würde wenn ein Land eben keine hohen Ressourcenvorkommen hat.

aber wie gesagt ändert da eben leider gar nichts.
Pfund
 
Beiträge: 19
Registriert: Sa 4. Mai 2013, 14:57
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: margins-Befehl

Beitragvon Pfund » So 9. Jun 2013, 12:12

wenn ich den Behel so eingebe wie du gesagt hast passiert das:

. margins hinatres10mean ,dydx(nfdimean)
'hinatres10mean' not found in list of covariates
r(322);
Pfund
 
Beiträge: 19
Registriert: Sa 4. Mai 2013, 14:57
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: margins-Befehl

Beitragvon daniel » So 9. Jun 2013, 13:05

Ok, hier haben wir die Ursache.

Code: Alles auswählen
xtreg cpimean nfdimean hinatres10_fdimean hinatres10mean lpopmean ipolity2mean growthmean trademean, fe vce(robust)



-margins- arbeitet nur mit factor variable notation (-help fvvarlist-) korrekt. Woher soll Stata wissen, dass Du hier eine Interaktion spezifiziert hast? Stata sieht hier 7 Prädikatoren, die nichts miteinander zu tun haben. Daher muss der marginale Effekt Deines kontinuierlichen Prädiktors an jeder Stelle des binären Moderators den gleichen Wert haben -- für Stata gitb es in diesem Modell keinen Moderator.

Hier ein Beispiel, um den Fehler zu replizieren und zu zeigen, wie es korrekt aussieht

Code: Alles auswählen
clear
sysuse auto

// incorrectly not using factor variables notation

g mpg_foreign = mpg * foreign

reg price mpg foreign mpg_foreign

margins ,dydx(mpg) at(foreign = 0)
margins ,dydx(mpg) at(foreign = 1)
// has to be the same results since Stata has no
// chance of knowing about the interaction

// here is the correct way of doing it

reg price c.mpg##i.foreign

margins foreign ,dydx(mpg)
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: margins-Befehl

Beitragvon Pfund » So 9. Jun 2013, 13:45

Okay vielen Dank erstmal

Es hat sich aber jetzt leider das nächste Problem ergeben. wenn ich das so mache wie du sagst, dann kommt diese Fehlermeldung:

. margins cpimean, dydx(nfdimean)
cpimean: factor variables may not contain noninteger values
r(452);

cpimean ist meine abhängige Variable.

Und noch eine Frage. Muss ich um den Interaktionsterm interpretieren zu können die ganze Regression vorher eingeben oder nur die mit dem Interaktionsterm?

also so: xtreg cpimean c.nfdimean##i.hinatres10mean lpopmean ipolity2mean growthmean trademean, fe vce(robust)
oder so: xtreg cpimean c.nfdimean##i.hinatres10mean, fe vce(robust)

Und was ist mit dieser Fehlermeldung gemeint?

Danke jetzt schon für deine Hilfe und Geduld. Aber ich komm mit diesem margins Befehl irgendwie nicht klar und ich muss für meine Analyse zwingend meine Interaktion erklären.
Pfund
 
Beiträge: 19
Registriert: Sa 4. Mai 2013, 14:57
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: margins-Befehl

Beitragvon daniel » So 9. Jun 2013, 13:56

Aber ich komm mit diesem margins Befehl irgendwie nicht klar


Das ist ok. -margins- ist ein sehr mächtiges command, das einer gewissen Einarbeitungszeit bedarf. Ich muss auch immer im help file nachlesen udn ausprobieren.

. margins cpimean, dydx(nfdimean)
cpimean: factor variables may not contain noninteger values
r(452);


Du willst (ziemlich sicher) nicht das optcome spezifizieren. Wobei ich als Fehlermeldung eher "'cipmean' not found in list of covariates r(322)" erwartet hätte. Schau Dir nochmal mein Beispiel an. In Deinem Fall wilst Du, so denke ich

Code: Alles auswählen
xtreg cpimean c.nfdimean##i.hinatres10mean lpopmean ipolity2mean growthmean trademean, fe vce(robust)

margins hintres10mean ,dydx(nfdimean)


spezifizieren. Ich gehe davon aus, dass Du das Ergebnis für alle Kovariaten adjustieren willst, daher wilst Du das volle Modell spezifizieren, nicht nur die Interaktion (und konditionalen Haupteffekte).

Allgemein frage ich mich allerdings, warum genau Du das mit -margins- machen willst? Du kannst doch die Interaktion auch aus dem Regressions output interpretieren?
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: margins-Befehl

Beitragvon Pfund » So 9. Jun 2013, 14:11

Ah sehr gut. So hat es tatsächlich geklappt.

Ja ich würde eigentlich gerne den Effekt aus dem Output ablesen. Das Problem dabei ist, dass aus dem Output raus nicht abzulesen ist, welche Variable des interaktionstermes wie gewirkt hat. Das heisst wenn bspw. beide Variablen negative Wirkung zeigen ist ja der Koeffizient negaiv. wenn aber auch nur eine eine negaive Wirkung zeigt und die andere eine positive, dann ist es nicht mehr ersichtlich an welcher Variable es liegt.
Weisst du wie ich meine.
Ich mach diese Analyse im Rahmen meiner Bachelorarbeit und meine Professorin meinte, dass wird das entweder grafisch oder rechnerisch interpretieren müssen.
Deshalb kam ich auf die Idee der marginalen Effekte.

Ich will herausfinden wie FDI auf die Korruption und denke, dass eine negaive Wirkung nur in Ländern erwartet wird, welche hohe natürliche Ressourcen aufweisen. Aber um zu sehen ob die natürlichen Ressourcen ausschlaggebend sind bruache ich ja die marginalen Effekte.

Ich habe das jetzt so eingetippt.
margins hinatres10mean ,dydx(nfdimean)

Jetzt hab ich Werte bei dy/dx und u.a. diesen Wert P>z

Sollte der z-Wert hier nicht auch signifikant sein, wenn er in der Regression signifikant ist?
Und noch eine blöde Frage. Aber kann ich den marginalen Effekt von FDI jetzt beim Wert unter dy/dx ablesen?

Es wäre wohl einfacher in einem marginsplot abzulesen oder?

Also kann ich deiner Meinung nach das bei dem wie es jetzt ist belassen oder müsste ich für den Effekt noch was anderes berücksichtigen.

Tut mir Leid für die vielen Fragen. Ich bin etwas aufgeschmissen mit dieser Interpretation.

Vielen Dank
Pfund
 
Beiträge: 19
Registriert: Sa 4. Mai 2013, 14:57
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: margins-Befehl

Beitragvon daniel » So 9. Jun 2013, 14:58

Das Problem dabei ist, dass aus dem Output raus nicht abzulesen ist, welche Variable des interaktionstermes wie gewirkt hat. Das heisst wenn bspw. beide Variablen negative Wirkung zeigen ist ja der Koeffizient negaiv. wenn aber auch nur eine eine negaive Wirkung zeigt und die andere eine positive, dann ist es nicht mehr ersichtlich an welcher Variable es liegt.
Weisst du wie ich meine.

Ehrlich gesagt nein. -margins- gibt Dir keine anderen Infos als die Regression. Zur Interpretation von Interaktionen allgemein vgl. http://www.statistik-forum.de/regressio ... t2455.html

Hier scheint aber noch weitere Verwirrung zu herschen.

Aber um zu sehen ob die natürlichen Ressourcen ausschlaggebend sind bruache ich ja die marginalen Effekte.

Eine lineare Regression (auch als fixed-effects Spezifikation) gibt Dir doch nichts anderes als die marginalen Effekte aus.

Ich mach diese Analyse im Rahmen meiner Bachelorarbeit und meine Professorin meinte, dass wird das entweder grafisch oder rechnerisch interpretieren müssen. [...]Es wäre wohl einfacher in einem marginsplot abzulesen oder?


Grafisch kann nett sein. Wie wäre es mit etwas in der Richtung

Code: Alles auswählen
clear
sysuse auto

reg price c.mpg##i.foreign

su mpg ,mean
margins foreign ,at(mpg = (`r(min)'(2)`r(max)'))

marginsplot ,recastci(rarea)
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

Nächste

Zurück zu Stata Syntax

Wer ist online?

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

cron