Liebe Forummitglieder,
ich habe folgendes Problem und möchte euch gerne um Hilfe bitten:
Ich habe Daten von 1000 Betrieben der Jahre 2001 bis 2010. Für jedes Jahr liegen Erträge vor. Nun möchte ich die Erträge trendbereinigen. Dazu muss ich zunächst eine lineate Regression von Ertrag in Abhängigkeit der Zeit durchführen.
Die Daten liegen in SPSS vor: Drei Spalten: Betriebsnummer, Jahr, Ertrag
Jede Betriebsnummer kommt 10 mal vor (einmal pro Jahr)
Wie kann ich die EINZELNEN Regressionen (Ertrag in Abhängigkeit der Zeit) für die EINZELNEN Betriebe in SPSS ermitteln?
Vielen herzlichen Dank
Auswertung Paneldaten
-
- Beiträge: 2391
- Registriert: 06.02.2011, 19:58
re
ich weiß nicht genau, was mit "Trendbereinigung" gemeint sein soll.
Wenn allerdings diese Bereinigung darin besteht, für jeden Betrieb eine Regressionsgleichung aufzustellen und anhand der Koeffizienten eine Berechnung durchzuführen, dann wären schlicht 1.000 Regressionen notwendig.
Das geht ganz gut in Python. Habe ich gerade gemacht.
Gruß
Wenn allerdings diese Bereinigung darin besteht, für jeden Betrieb eine Regressionsgleichung aufzustellen und anhand der Koeffizienten eine Berechnung durchzuführen, dann wären schlicht 1.000 Regressionen notwendig.
Das geht ganz gut in Python. Habe ich gerade gemacht.
Gruß
drfg2008
-
- Beiträge: 7
- Registriert: 12.07.2011, 17:11
Hallo,
vielen Dank für die schnelle Antwort. Ja genau das habe ich gemeint. Ich möchte eine Regressionsgerade für jeden Betrieb erstellen (Ertrag in Abhängigkeit der Zeit). Leider bin ich eine absolute Anfängerin und kann kein Phyton. Gibt es eine Möglichkeit dies mit den vorgegebenen SPSS Tools zu lösen oder welche anderen Möglichkeiten gäbe es noch an das Problem heranzugehen. Ansonsten kann ich auch versuchen mich in Phyton einzuarbeiten.
Viele Grüße
vielen Dank für die schnelle Antwort. Ja genau das habe ich gemeint. Ich möchte eine Regressionsgerade für jeden Betrieb erstellen (Ertrag in Abhängigkeit der Zeit). Leider bin ich eine absolute Anfängerin und kann kein Phyton. Gibt es eine Möglichkeit dies mit den vorgegebenen SPSS Tools zu lösen oder welche anderen Möglichkeiten gäbe es noch an das Problem heranzugehen. Ansonsten kann ich auch versuchen mich in Phyton einzuarbeiten.
Viele Grüße
-
- Beiträge: 2391
- Registriert: 06.02.2011, 19:58
re
1.000 splits ? Und die dann auch noch nach Koeffizienten auswerten.
oha.
Gruß
PS Hier der Python-Code zum Auslesen von Regressionskoeffizienten:
Das muss noch gekoppelt werden mit einer Schleife, die dann etwa so aussieht:
Und damit die Schleife bei einer Fehlermeldung nicht abbricht, muss noch die Bedingung vorher geprüft werden. Das sieht dann so aus:
Deshalb meine Frage, ob unbedingt Regressionen notwendig sind.
oha.
Gruß
PS Hier der Python-Code zum Auslesen von Regressionskoeffizienten:
Code: Alles auswählen
BEGIN PROGRAM.
import spss,spssaux
spss.Submit("GET FILE='C:/user/frank/spss-seminar/tu-berlin.sav'.")
cmd=r"""REGRESSION
/MISSING LISTWISE
/STATISTICS COEFF OUTS R ANOVA
/CRITERIA=PIN(.05) POUT(.10)
/NOORIGIN
/DEPENDENT Bewertung
/METHOD=ENTER Geschlecht Schicht Alter."""
desc_table,errcode=spssaux.CreateXMLOutput(
cmd,
omsid="Regression")
stbw_alter=spssaux.GetValuesFromXMLWorkspace(
desc_table,
tableSubtype="Coefficients",
rowCategory="Alter",
colCategory="T",
cellAttrib="text")
if stbw_alter:
print "Der Koeffizient beträgt: ", stbw_alter[0]
END PROGRAM.
Das muss noch gekoppelt werden mit einer Schleife, die dann etwa so aussieht:
Code: Alles auswählen
durchlauf = len(spssaux.VariableDict(['SICYear'])[0].ValueLabels) + 1
print durchlauf
i = 0
while i < durchlauf:
i+=1
Und damit die Schleife bei einer Fehlermeldung nicht abbricht, muss noch die Bedingung vorher geprüft werden. Das sieht dann so aus:
Code: Alles auswählen
if all([len(item) == 1 for item in [alpha,beta1,beta2, alpha_stdfehler, beta1_stdfehler,beta2_stdfehler]]):
Deshalb meine Frage, ob unbedingt Regressionen notwendig sind.
drfg2008
-
- Beiträge: 1733
- Registriert: 11.03.2010, 22:28
-
- Beiträge: 7
- Registriert: 12.07.2011, 17:11
Liebe Helfer,
ich bedanke mich ganz herzlich für Eure Hilfe. Ich habe die Daten aufgeteilt (SPLIT FILE) und dann eine lineare Regression durchgeführt. Die Trendbereinigung habe ich dann in Access gemacht. Insgesamt hatte ich 20000 Betriebe. Die Regression in SPSS hat 2 Stunden gedauert aber perfekt funktioniert.
Vielen Dank auch für den Code. Da ich noch mehr Daten auswerten muss, werd ich darauf evtl. noch mal zurückkommen.
Viele Grüße
ich bedanke mich ganz herzlich für Eure Hilfe. Ich habe die Daten aufgeteilt (SPLIT FILE) und dann eine lineare Regression durchgeführt. Die Trendbereinigung habe ich dann in Access gemacht. Insgesamt hatte ich 20000 Betriebe. Die Regression in SPSS hat 2 Stunden gedauert aber perfekt funktioniert.
Vielen Dank auch für den Code. Da ich noch mehr Daten auswerten muss, werd ich darauf evtl. noch mal zurückkommen.
Viele Grüße