Auswertung Paneldaten

Fragen und Diskussionen rund um die Arbeit mit SPSS. Für allgemeine Statistik-Themen, die nicht mit SPSS zusammenhängen, bitte das Statistik-Forum nutzen.
Antworten
Milch12
Beiträge: 7
Registriert: 12.07.2011, 17:11

Auswertung Paneldaten

Beitrag von Milch12 »

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
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

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ß
drfg2008
Milch12
Beiträge: 7
Registriert: 12.07.2011, 17:11

Beitrag von Milch12 »

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
Generalist
Beiträge: 1733
Registriert: 11.03.2010, 22:28

Beitrag von Generalist »

Datei aufteilen (SPLIT FILE).
Milch12
Beiträge: 7
Registriert: 12.07.2011, 17:11

Beitrag von Milch12 »

Danke das werd ich gleich ausprobieren.
Vielen Dank
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

1.000 splits ? Und die dann auch noch nach Koeffizienten auswerten.

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
Generalist
Beiträge: 1733
Registriert: 11.03.2010, 22:28

Beitrag von Generalist »

Bei Split file werden die Koeffizienten aller Durchläufe in eine separate Datei geschrieben, wenn man das anfordert. Was ich mir in dem vorliegenden Fall aber als tatsächlichen Zweck vorstellen kann, ist das Abspeichern der (eben trendbereinigten) Residuen in der Ausgangsdatei.
Milch12
Beiträge: 7
Registriert: 12.07.2011, 17:11

Beitrag von Milch12 »

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
Anzeige:Statistik und SPSS: Die besten Bücher
Als Buch oder E-Book - Jetzt bestellen
spss datenanalyse
SPSS - Moderne Datenanalyse - Jetzt bestellen!
statistik datenanalyse
Statistik - Der Weg zur Datenanalyse - Jetzt bestellen!
Antworten