Warum sind die Ergebnisse von R und SPSS so verscheieden

Wenn die Ergebnisse von R und SPSS verglichen werden sind die Werte oft unterschiedlich und der Wissenschaftler wünscht sich dann die ‘richtigen’ Resultate wie sie eben SPSS ausgibt. Es ist jetzt nicht so dass R ‘etwas falsch macht’. R hat einfach eine andere Standardkonfiguration als SPSS.

ANOVA

Hier als Beispiel die Ergebnisse wie sie SPSS ausgibt. Die Daten stammen von Stanley (2015) dort sind auch weitere Deteils zur Analyse beschrieben.

Tab 1: SPSS Output
source SS Df MS F sig
corrected model 5479 5 1096 13.2 0
intercept 163333 1 163333 1967.03 0
gender 169 1 169 2.03 0.161
alcohol 3332 2 1666 20.07 0
gender*alcohol 1978 2 989 11.91 0
error 3488 41 83
total 172300 48
corrected total 8967 47

Hintergrund ist das bei einer Varianzanalysen Versuchsbedingungen untersucht werden und diese kennt immer nur der Wissenschaftler selber. Das Programm weiss nichts über die Versuchsbedingungen und mit Glück passen sogar die default Einstellungen. Besser ist natürlich der Diplomant/Wissenschaftler macht sich gedanken über sein statistisches Model und wählt die geeigneten Einstellungen im Programm.

Fazit SPSS und R rechnen die ANOVA exat gleich.

Gegenüberstellung der F-Werte mit ‘contr.helmert’ versus ‘contr.treatment’.

Tab 2: Gegenüberstellung der F-Werte
  R.treatment   R.helmert   SPSS
Quelle   Typ.3 Typ.2   Typ.3 Typ.2   default
(Intercept)   354.1   1967.03   1967.03
gender   1.88 2.03   2.03 2.03   2.03
alcohol   0.61 20.07   20.07 20.07   20.07
gender:alcohol   11.91 11.91   11.91 11.91   11.91
getOption("contrasts")
## [1] "contr.helmert" "contr.poly"
aov(attractiveness~gender*alcohol,data=DF) %>% 
  broom::tidy() %>%
  knitr::kable(digits=c(0,0,0,0,2,3), caption="R Output")
Table 1: R Output
term df sumsq meansq statistic p.value
gender 1 169 169 2.03 0.161
alcohol 2 3332 1666 20.07 0.000
gender:alcohol 2 1978 989 11.91 0.000
Residuals 42 3488 83 NA NA
# 
# crf.lm <- lm(attractiveness~gender*alcohol,data=DF)
# anova(crf.lm)
#  
#options(contrasts = c("contr.helmert", "contr.poly"))

Binomiale Regressionsanalyse

Bei SPSS gibt es zwei verschiedene Methoden “klassisch” und “versteckt” über GLM.

Bei der klassischen Variante kann SPSS keine Faktoren ins Model aufnehmen und beherrscht nur den Wald-Test. Bei GLM rechnet SPSS aber die Intercept anderstals, kann aber Faktoren berechnen und es können verschiedene Tests gewählt werden. Die Ergebnisse der Parameter identisch aber das Intercept ist unterschiedlich.

Bei SPSS wird quasi die ANOVA bei den Koeffizienten ausgegeben und die Inercepts werden je nach Einstellung unterschiedlich berechnet - was problematisch wird wenn man aus den Parametern die zugehörigen Wahrscheinlichkeiten errechnen will. Bei R wird der Parameter b mit dem LR-Test getestet und Faktoren werden automatisch erkannt und das Intercept wird immer gleich berechnet.

Beispiel Harnblasenkarzinom

Ergebnisse mit SPSS

Daten Harnblasenkarzinom drei Variablen Gruppe: Krank/Gesund, T-Zelltypisierung und LAI-Test

Ergebnisse von SPSS über Regression

Parameter B S.E. Wald df Sig. Exp(B)
tzell 0.2 0.094 4.57 1 0.032 1.222
lai 2.21 0.877 6.3 1 0.012 9.075
Constant -14.64 6.329 5.37 1 0.021 0

Ergebnisse von SPSS über GML

Parameter B Std. Error Lower Upper Wald Chi-Square df Sig.
Threshold [gruppe=1.00] 12.44 6.52 -0.35 25.2 3.63 1 0.057
tzell 0.2 0.09 0.01 0.34 4.5 1 0.032
[lai=.00] -2.2 0.88 -3.9 -0.48 6.3 1 0.012

Ergebnisse mit R

Hier die formatierten der Ergebnisse aus R. Mit dem Befehl summary() und confint() können die Ergebnisse angefordert werden.

fit1 <- glm(gruppe~tzell+factor(lai), hkarz, family = binomial)
fitting null model for pseudo-r2
Tab 3: Logistische Regression mit Likelihood Ratio Test und Log-Likelihood 95% Konfidenzintervall
Quelle b conf statistic odds p
Parameter
(Intercept) -13.5 [-1.96, -27.6] -2.11 .035
tzell 0.201 [0.406, 0.031] 2.14 1.22 .032
factor(lai)1  1.1 [2.03, 0.275] 2.51 3.01 .012
Goodness of fit
AIC 42.52
BIC 47.94
McFadden 0.41
r2ML 0.43
r2CU 0.58
RMSE 2.64
Obs 45
Tab 4: Unterschied von Wald und Log-Likelihood 95%-Konfidenzintervall
Wald   LL
2.5 % 97.5 %   2.5 % 97.5 %
-26.11 -0.97   -27.6 -1.96
0.02 0.38   0.03 0.41
0.24 1.96   0.27 2.03
#'  ANOVA
#'  Voraussetzung  ist dass das Modell streng linear ist. 
car::Anova(fit1, type = "III", test.statistic = "Wald")
## Analysis of Deviance Table (Type III tests)
## 
## Response: gruppe
##             Df  Chisq Pr(>Chisq)  
## (Intercept)  1 4.4596    0.03470 *
## tzell        1 4.5744    0.03245 *
## factor(lai)  1 6.3239    0.01191 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#' Omnibus Test 
lmtest::lrtest(fit1)
## Likelihood ratio test
## 
## Model 1: gruppe ~ tzell + factor(lai)
## Model 2: gruppe ~ 1
##   #Df  LogLik Df  Chisq Pr(>Chisq)    
## 1   3 -18.258                         
## 2   1 -31.091 -2 25.668  2.669e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Zusammenfassend

R und SPSS werden zwei verschiedene Hypothesen um die p-Werte zu bestimmen. Und bei SPSS werden die Intercepts quasi kreativ berechnet.

Signifikanz der Regressionskoeffizienten; bei SPSS wird der Wald-Test verwendet, ich verwende den LRT (ein Vergleich findet man unter http://thestatsgeek.com/2014/02/08/wald-vs-likelihood-ratio-test/) Bartlett, Paul, and Bartlett (2016)

Mehr zum Thema findet sich unter Bruin (2011)

Literatur

Bartlett, Jonathan, Paul, and Jonathan Bartlett. 2016. “Wald Vs Likelihood Ratio Test.” Thestatsgeek.com. June 2016. http://thestatsgeek.com/2014/02/08/wald-vs-likelihood-ratio-test/.

Bruin, J. 2011. “LOGIT Regression | R Data Analysis Examples.” February 2011. https://stats.idre.ucla.edu/r/dae/logit-regression/.

Stanley, David. 2015. “Ensuring R Generates the Same Anova F-Values as Spss.” August 2015. http://www.statscanbefun.com/rblog/2015/8/27/ensuring-r-generates-the-same-anova-f-values-as-spss.