Multible lineare Regression - Huber-White-Standardfehler

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.
Nininanana
Beiträge: 32
Registriert: 02.05.2011, 18:26

Multible lineare Regression - Huber-White-Standardfehler

Beitrag von Nininanana »

Noch immer sitze ich verzweifelt an meiner Regression. Das nächste Problem hat sich inzwischen angekündigt und ich finde nach stundenlanger Suche keine Antwort und starte daher noch einmal einen dezentralen Hilferuf!

Ich habe feststellen müssen, dass meine Regression leider nicht alle Prämissen erfüllt und Heteroskedastizität aufweist.
Wenn ich es nun richtig verstanden habe, ist es unter anderem praktikabel in der Analyse den Huber-White-Standardfehler anzugeben.
Ich verstehe allerdings nicht, wie mir diese von SPSS ausgespuckt wird? Kann mir hier vielleicht jemand helfen?

Vielen Dank im Voraus!
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

vermeide doch das Problem der Heteroskedastizität durch Logarithmieren der Variablen


Ist die Homoskedastizität verletzt, so sind die geschätzten Parameter weiterhin erwartungstreue Schätzer für die Populationsparameter. Allerdings werden die Standardfehler und somit die Konfidenzintervalle und die Irrtumswahrscheinlichkeiten verzerrt bestimmt.
Eid/Gollwitzer/Schmitt (2010, S.688)

"Abhilfe schafft in vielen Fällen eine geeignete Datennormalisierung."

http://de.wikipedia.org/wiki/Homoskedas ... zit%C3%A4t


SPSS bietet auch sog. robuste Regression an. Dafür wird allerdings eine Extention, Python und das R Plugin zu installieren sein.

https://www.ibm.com/developerworks/myde ... 1e9b491185

Gruß
drfg2008
Nininanana
Beiträge: 32
Registriert: 02.05.2011, 18:26

Beitrag von Nininanana »

zunächst: Danke für die schnelle Antwort.

Wenn ich es richtig verstehe, hat die vorliegende Heteroskedastizität keinen Einfluss auf die Parameter. Es wäre aber falsch in der Ergebnispräsentation die "jetzigen" Standardfehler anzugeben, da diese verzerrt sind, richtig?

Sollte ich mich nun für das Logarithmieren entscheiden, heißt das, dass ich sowohl die exogenen als auch die endogenen Variablen VOR der Regression logarithmiere?

Also beipsielsweise so:
compute neueVariable=ln(alteVariable)
EXE.

Und welche Auswirkungen hat dies auf meine Interpretation der Ergebnisse? Muss das Logar. auch bei der Interpretation der Koeffizienten beachtet werden?

Mit der Installtion der "robusten Schätzung" scheint leider etwas nicht zu klappen, also muss ich wohl oder über auf das Logarithmieren zurückgreifen :/

Vielen Dank im Voraus!!
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

Die Installation ist nicht so einfach, falls du eine ältere Version von SPSS hast (älter als 19). Es müssen auch R und Python installiert sein. Und bei einigen Betriebssystemen (Vista) blockiert auch noch der Zugangsschutz auf die SPSS Ordner (in die das Plugin geladen wird), so dass hier an anderer Stelle installiert werden und dem Betriebssystem das mitgeteilt werden muss.

Nein, es reicht (meist) die AV (vorher) zu logarithmieren. Alles andere wie gehabt.
Wenn ich es richtig verstehe, hat die vorliegende Heteroskedastizität keinen Einfluss auf die Parameter. Es wäre aber falsch in der Ergebnispräsentation die "jetzigen" Standardfehler anzugeben, da diese verzerrt sind, richtig?
Ja, so ungefähr (wenn mit Parameter hier die b-Koeffizienten gemeint sind). Allerdings stimmt dann der t-Test pro Koeffizient nicht mehr. Nach Logarithmierung sollte das dann aber o.k. sein.

Ganz allgemein: Eine geringe (!) Streuungszunahme wird auch kein wirkliches Problem sein. Viel gravierender sind Fehlinterpretationen des Modells, oder sonstige Verletzungen der Modellvoraussetzungen.

Gruß
drfg2008
Nininanana
Beiträge: 32
Registriert: 02.05.2011, 18:26

Beitrag von Nininanana »

Danke für die Antwort. Leider scheint das Problem noch immer nicht gelöst.

Ich habe SPSS 19. Die Installation hat leider dennoch nicht funktioniert.

Soeben habe ich daher versucht die aV zu logar. Dabei kam folgende Meldung:
Das Argument für den natürlichen Logarithmus ist kleiner oder gleich null. The result has been set to the system-missing value.

Das Problem mit Heteroskedastizität scheint nun behoben. Allerdings zeigt das Histogramm nun keine Normalverteilung mehr Residuen. Damit wäre also doch nun wieder eine weitere Prämisse des Modells verletzt oder?

Außerdem ist das R² nun niedriger als vor der Logar. der uV. Ein Blick auf die Anaova zeigt nun auch, dass das Ergebnis nun nicht mehr signifikant ist.

Aus meiner Sicht bringt die Logar. der aV also nur Nachteile :-/ oder verstehe ich hier gerade einfach etwas falsch? Ich verzweifel...
Nininanana
Beiträge: 32
Registriert: 02.05.2011, 18:26

Beitrag von Nininanana »

Ich habe hier mal ein Bild des Streudiagramms (VOR der Logar. der aV).

http://img593.imageshack.us/img593/5507/unbenanntev.jpg

Vielleicht kann sich das ja einer von euch mal anschauen. Kann ich mit diesem vielleicht auch arbeiten (sprich meine ursprüngliche Regression nehmen und in der Interpretation auch die Standardfehler dieser Regression angeben?) oder spricht das Streudiagramm tatsächlich so sehr für Heteroskedastiztät?

Da - wie gesagt - nach dem Logar. noch mehr Modellprämissen verletzt sind und ich es einfach nicht hinbekomme, dass Tool für eine robuste Regression bei SPSS 19 zu installieren, wäre ich für das Urteil eines Fachmannes sehr dankbar!
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

Sieht nach einer Ausreißerproblematik aus.

Bei 2 Variablen kannst du auch einfach den Spearman rechnen. Die Korrelation ist in diesem Fall identisch mit der Regression. Und der Spearman ist als Rangkorrelationskoeffizient robust.

Gruß
drfg2008
Nininanana
Beiträge: 32
Registriert: 02.05.2011, 18:26

Beitrag von Nininanana »

Mit "2 Variablen" meinst du, dass ich nur eine aV und eine uV in der Regression habe?

Meine Regression besteht aus einer aV und insgesamt 11 uV. Das heißt in diesem Fall kann ich nicht nach "Spearman" rechnen (wobei ich nicht mal weiß, was das bedeuten würde).

Aber nach Betrachtung des Streudiagramms würdest du auf jeden Fall sagen, dass mein Modell nicht den Prämissenentspricht, ich also noch irgendetwas verändern muss oder?
Nininanana
Beiträge: 32
Registriert: 02.05.2011, 18:26

Beitrag von Nininanana »

Ich habe die "Robuste Regression" (samt Python und R) nun doch installieren können! (Tatsächlich etwas tricky...)

Wie funktioniert dieses Plugin denn genau bzw. wie bediene ich es korrekt? Wenn ich im entsprechenden Dialogfeld die aV und uVs eingebe, passiert zwar etwas (in R). Jedoch kommt nichts "Greifbares" dabei heraus (im Sinne von: z.B. einem neuen Standardfehler).

Vielleicht könntest du mir eine Kurzeinweisung geben? Das wäre spitze! Danke.
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

Falls alles korrekt installiert sein sollte, dann über die Menüführung -> Regression - robuste

Gruß
drfg2008
Nininanana
Beiträge: 32
Registriert: 02.05.2011, 18:26

Beitrag von Nininanana »

Vielleicht habe ich mich etwas missverständlich ausgedrückt:
Das Plugin kann ich schon aufrufen und auch die gewünschen aV und uV auswählen. Wenn ich dann auf "Einfügen" klicke, kann ich auch die - in R verfasste - Syntax sehen (s.unten). Will ich sie aber ausführen, kommt lediglich die Fehlermeldung "Unbekanntes DatenSet results".

Was mache ich falsch?



* Dialog: Robust Regression with R.
* With R library MASS.
* Author: Hans Grüner, Freie Universität Berlin (http://gruener.userpage.fu-berlin.de).
* Last change: 12.05.2009.
set printback=off.
DATASET NAME original.
begin program R.
library(MASS)
depvar = "Einkger_gelernterArbeiter"
indepvars = "eink_rl_41 einschaetz_abw_41 gewerkschaft index_Bedarf_final index_Leistung_final geschl rente arbeitslos hausfrau nichtbeschäftigt selbstständig v119 v102 v100 ostwest"
Daten <-spssdata.GetDataFromSPSS("Einkger_gelernterArbeiter eink_rl_41 einschaetz_abw_41 gewerkschaft index_Bedarf_final index_Leistung_final geschl rente arbeitslos hausfrau nichtbeschäftigt selbstständig v119 v102 v100 ostwest")
Daten <- na.omit(Daten)
attach(Daten)
indepvarsm = gsub(" +", " + ", indepvars)
ff <- paste(depvar, "~", indepvarsm)
## Robust Regression
obj.rlm <- rlm(as.formula(ff), data = Daten, method = "M", model = FALSE)
res <- (summary(obj.rlm))
methode="M"
if (methode == "MM")
{
caption = paste(sprintf("Method: M-estimation with Tukey's biweight\n"), sprintf("\nDependent variable: Einkger_gelernterArbeiter"),
sprintf("\nResidual standard error: "),
formatC(res$sigma, digits=5, format="f"), sprintf("\nDegrees of freedom: "), res$df[[2]])
spsspivottable.Display(coefficients(res),
title="Robust Regression with R", "x", caption=caption, isSplit=FALSE)
}
if (methode == "M")
{
caption = paste(sprintf("Method: M-estimation with Huber's weights\n"), sprintf("\nDependent variable: Einkger_gelernterArbeiter"),
sprintf("\nResidual standard error: "),
formatC(res$sigma, digits=5, format="f"), sprintf("\nDegrees of freedom: "), res$df[[2]])
spsspivottable.Display(coefficients(res),
title="Robust Regression with R", "x", caption=caption, isSplit=FALSE)
}
Daten$rweights <- obj.rlm$w
detach(Daten)
attach(Daten)
Dict <- spssdictionary.GetDictionaryFromSPSS("Einkger_gelernterArbeiter eink_rl_41 einschaetz_abw_41 gewerkschaft index_Bedarf_final index_Leistung_final geschl rente arbeitslos hausfrau nichtbeschäftigt selbstständig v119 v102 v100 ostwest")
varSpec <- c("rweights","Case weights",0,"F8.2","scale")
varSpec2 <- c("casenums","Case numbers from the original dataset",0,"F8","nominal")
Dict <- data.frame(Dict,varSpec,varSpec2)
spssdictionary.SetDictionaryToSPSS("results",Dict)
casenums <- row.names(Daten)
Daten <- data.frame(Daten,casenums)
spssdata.SetDataToSPSS("results",Daten)
spssdictionary.EndDataStep()
detach(Daten)
rm(list = ls())
end program.
DATASET ACTIVATE results.
* Diagrammerstellung.
GGRAPH
/GRAPHDATASET NAME="graphdataset" VARIABLES=casenums rweights MISSING=LISTWISE REPORTMISSING=NO
/GRAPHSPEC SOURCE=INLINE.
BEGIN GPL
SOURCE: s=userSource(id("graphdataset"))
DATA: casenums=col(source(s), name("casenums"), unit.category())
DATA: rweights=col(source(s), name("rweights"))
DATA: casenums1=col(source(s), name("casenums"), unit.category())
GUIDE: axis(dim(1), label("Case Numbers from the Original Dataset"))
GUIDE: axis(dim(2), label("Case Weights"))
SCALE: linear(dim(2), include(0))
ELEMENT: point(position(casenums*rweights), label(casenums1))
GUIDE: form.line(position(*,"0.5"))
END GPL.
DATASET ACTIVATE original.
*DATASET CLOSE results.
set printback=on.
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

Die Syntax lautet:

Code: Alles auswählen

SPSSINC ROBUST REGR DEPENDENT = v7  ENTER = v4
/OPTIONS MISSING=LISTWISE
/SAVE.
Und der Output ist anschließend auch eher übersichtlich.

Das Ganze lässt sich bequem über die Menüführung programmieren (Regression -> Robust Regression)

Du scheinst etwas anderes installiert zu haben. Du musst die Datei SPSSINC_ROBUST_REGR (die im ZIP-File ist) in den Ordner "Extentions" deines SPSS Programms einfügen/entzippen und dann über Extras -> benutzerdefinierte Dialogfelder suchen und ausführen. Danach befindet sich das Programm in der Menüführung.


Gruß
drfg2008
Nininanana
Beiträge: 32
Registriert: 02.05.2011, 18:26

Beitrag von Nininanana »

Ah ok, danke. Das war wohl ein falsches Plugin, das ich da installiert hab. Jetzt habe ich das richtige installiert, und habe ein erneutes Problem. Und zwar erkennt SPSS den Befehl SPSSINC... nicht an.

Ich meine, Python und R korrekt installiert zu haben (Kann man das irgendwo überprüfen?). Oder könnte der Fehler woanders liegen?

Vielen Dank!

Hier noch die Fehlermeldung:
SPSSINC ROBUST REGR

>Fehler Nr. 1. Befehlsname: SPSSINC
>Das erste Wort in der Zeile wird nicht als an SPSS Statistics-Befehl erkannt.
>Die Ausführung dieses Befehls wurde unterbrochen.
/DEPENDENT = Einkger_gelernterArbeiter
/ENTER = geschl v100 v119 einschaetz_abw_41 eink_rl_41 v102 selbstständig rente arbeitslos hausfrau nichtbeschäftigt gewerkschaft index_Bedarf_final index_Leistung_final ostwest
/OPTIONS MISSING=LISTWISE
/SAVE.
drfg2008
Beiträge: 2391
Registriert: 06.02.2011, 19:58

re

Beitrag von drfg2008 »

Probiere lieber die von SPSS zur Verfügung gestellte Regressionsanalyse einzusetzen. Oder, vielleicht noch besser, im 2-Variablen Fall einfach den Spearman zu berechnen, denn nach dem Bild des Streudiagramms zu urteilen könnte eine Ausreißerproblematik vorliegen (die auch eine Regression verzerrt).

Versuche nur Verfahren einzusetzen, die du auch verstehst.

Gruß
drfg2008
Nininanana
Beiträge: 32
Registriert: 02.05.2011, 18:26

Beitrag von Nininanana »

Danke für deinen Tipp, aber es ist dennoch unumgänglich, dass ich diese Prozedur durchführe.
Im Prinzip sollte nun auch alles funktionieren. Mein Problem aus dem letzten Post hat sich erledigt: SPSS erkennt den Befehl jetzt an, das Bundle müsste nun eigentlich korrekt installiert sein (es erscheint auch im Menü).

Einziges Problem nun: Die Syntax wird ausgeführt, aber im Viewer erscheint nichts weiter als eben diese Syntax. Keine Tabelle, Diagramm, o.Ä.
Also nur Folgendes:

DATASET ACTIVATE DatenSet1.
SPSSINC ROBUST REGR DEPENDENT = Einkger_gelernterArbeiter ENTER = einschaetz_mittel_44 eink_rl_44
/OPTIONS MISSING=LISTWISE
/SAVE.

Habe ich noch etwas übersehen?

Ich wäre dir wirklich sehr dankbar, wenn du mir da einen Hinweis geben könntest!

Gruß
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