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

标签 r linear-regression spss pearson-correlation

我是统计学的初学者。目前正在参加一门入门类(class),该类(class)使用 .我一直在努力学习同时,到目前为止,对于使用这两种工具的计算,我一直得到相同的结果,正如预期的那样。

然而,我们目前正在做相关性( Pearson's Rho ),并拟合线性模型,我一直在 R 之间得到不同的结果。和 SPSS .

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

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 环境”中,因此如果我现在能够获得相同的结果就好了:)

最佳答案

这只是部分答案,因为我可以看到问题所在,尽管我不确定是什么原因造成的。问题与缺失值以及它们在 SPSS 文件中的处理方式有关。让我们拿 educ以变​​量为例...

在 SPSS 文件中,您可以看到值 97 , 98 , 和 99被定义为缺失值:

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 没有考虑到 99缺少 1214 的值 .例如,尝试更改 educ将 837 转换为任何其他(非缺失)数字,您会看到 SPSS 表示 educ 缺少 0 行,实际上 1214 应该仍然缺失 (99)

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

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

我不确定为什么 SPSS 没有将这些行视为缺失。它可能是一个错误(对于 SPSS 来说不是第一个......)或者与文件的设置方式有关。我没有检查后者,因为它是一个大文件,而且我对数据集不够熟悉,不知道去哪里找

关于r - R 和 SPSS 线性模型结果之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53868465/

相关文章:

if-statement - SPSS - DO IF 函数缺少值和多个计算语句

r - 用于异常检测的具有缺失值的时间序列的 STL 分解

machine-learning - 解释特征交互与特征相关性

spss - 根据条件过滤SPSS中的前n个案例

list - 如何将两个变量列表相乘

python - 在函数末尾将元组打印到数据帧中

r - ggplot2 在此特定示例中更改图例标题

r - R 中的上采样 - randomForest

r - 如何折叠/合并 R 中的表达式对象?

r - 用 R 中的 anova() 比较两个线性模型