R和SPSS线性模型结果之间的差异

时间:2018-12-20 12:11:35

标签: r linear-regression spss pearson-correlation

我是统计学的初学者。目前正在参加入门课程,该课程使用。我一直在尝试同时学习,到目前为止,对于使用两种工具进行的计算,我一直都得到了相同的结果。

但是,我们目前正在进行相关性(Pearson's Rho,并且正在拟合线性模型,而且我一直在RSPSS之间得到不同的结果。

数据集是this zip-file中的 GSS2012.zip

d = GSS2012$tolerance
e = GSS2012$age
f = GSS2012$polviews
g = GSS2012$educ

SPSS    R   std. error (SPSS)  
intercept   6,694   7,29707726  0,623  
e   -0,031  -0,03130627 0,006  
f   -0,123  -0,20586503 0,072  
g   0,411   0,40029541  0,033  

下面列出了获得上述结果的完整,最少的工作示例。

我为use="stuff"尝试了不同的cor;没有区别。

cor(d, e, use = "pairwise.complete.obs")

lm的完整的最小工作示例:

> library(haven)
> GSS2012 <- read_sav("full version/GSS2012.sav")
> lm(GSS2012$tolerance ~ GSS2012$age + GSS2012$polviews + GSS2012$educ, na.action="na.exclude", singular.ok = F)

Call:
lm(formula = GSS2012$tolerance ~ GSS2012$age + GSS2012$polviews + 
    GSS2012$educ, na.action = "na.exclude", singular.ok = F)

Coefficients:
     (Intercept)       GSS2012$age  GSS2012$polviews      GSS2012$educ  
         7.29708          -0.03131          -0.20587           0.40030  

到目前为止,没有任何东西给我提供与SPSS相同的值。 ---并不是我知道后者一定是正确的,我只是想复制结果。

SPSS脚本:

DATASET ACTIVATE DataSet1. 
REGRESSION 
  /MISSING LISTWISE 
  /STATISTICS COEFF OUTS R ANOVA 
  /CRITERIA=PIN(.05) POUT(.10) 
  /NOORIGIN 
  /DEPENDENT tolerance 
  /METHOD=ENTER age polviews educ.

类似这样的文章可能与以下内容有关:link1; link2; link3,但我无法使用其中的信息来复制SPSS数据。 (同样,R可能会有更准确的结果;我不知道。但是我处于“ SPSS环境中”,因此,如果我能够获得暂时相同的结果:)

1 个答案:

答案 0 :(得分:2)

这只是部分答案,因为我不确定是什么原因,尽管我不确定是什么原因。问题在于缺少的值以及如何在SPSS文件中处理它们。让我们以educ变量为例...

在SPSS文件中,您可以看到值979899被定义为缺失值:

enter image description here

如果按educ列对SPSS文件进行排序,则可以看到有2个数据行具有这些缺失值。它们是ID 8371214

enter image description here

在R中,您可以确认这些行确实包含缺失值(NA):

> which(is.na(GSS2012$educ))
[1]  837 1214

问题出在SPSS中,当您实际上告诉它统计丢失的行数时,它说只有1条丢失的数据行:

FREQUENCIES VARIABLES=educ 
  /FORMAT=NOTABLE
  /ORDER= ANALYSIS .

enter image description here

问题出在ID 1214上。 SPSS认为1214缺少99。例如,尝试将837的educ更改为任何其他(不丢失)的数字,您会发现SPSS指出educ的行有0个缺失,而实际上1214应该仍然缺失(99)

我还没有检查,但是我猜测polviews变量的许多行都发生了类似的事情。

其结果是,运行分析时SPSS不会将这些行视为丢失的数据,但是在R中,这些值已正确设置为丢失和省略。换句话说,SPSS为模型使用的数据要多于应使用的数据。您可以通过查看SPSS和R输出来确认这一点-两个程序的自由度不同,这会导致结果(略有差异)

我不确定SPSS为什么不将这些行视为丢失。这可能是错误(不是SPSS的第一个错误),也可能与文件设置方式有关。我没有检查后者,因为它很大,而且我对数据集还不够熟悉,无法知道在哪里查看