我是统计学的初学者。目前正在参加入门课程,该课程使用spss。我一直在尝试同时学习r,到目前为止,对于使用两种工具进行的计算,我一直都得到了相同的结果。
但是,我们目前正在进行相关性(Pearson's Rho
,并且正在拟合线性模型,而且我一直在R
和SPSS
之间得到不同的结果。
数据集是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
环境中”,因此,如果我能够获得暂时相同的结果:)
答案 0 :(得分:2)
这只是部分答案,因为我不确定是什么原因,尽管我不确定是什么原因。问题在于缺少的值以及如何在SPSS文件中处理它们。让我们以educ
变量为例...
在SPSS文件中,您可以看到值97
,98
和99
被定义为缺失值:
如果按educ
列对SPSS文件进行排序,则可以看到有2个数据行具有这些缺失值。它们是ID 837
和1214
:
在R中,您可以确认这些行确实包含缺失值(NA
):
> which(is.na(GSS2012$educ))
[1] 837 1214
问题出在SPSS中,当您实际上告诉它统计丢失的行数时,它说只有1条丢失的数据行:
FREQUENCIES VARIABLES=educ
/FORMAT=NOTABLE
/ORDER= ANALYSIS .
问题出在ID 1214
上。 SPSS认为1214缺少99
值。例如,尝试将837的educ
更改为任何其他(不丢失)的数字,您会发现SPSS指出educ
的行有0个缺失,而实际上1214应该仍然缺失(99)
我还没有检查,但是我猜测polviews
变量的许多行都发生了类似的事情。
其结果是,运行分析时SPSS不会将这些行视为丢失的数据,但是在R中,这些值已正确设置为丢失和省略。换句话说,SPSS为模型使用的数据要多于应使用的数据。您可以通过查看SPSS和R输出来确认这一点-两个程序的自由度不同,这会导致结果(略有差异)
我不确定SPSS为什么不将这些行视为丢失。这可能是错误(不是SPSS的第一个错误),也可能与文件设置方式有关。我没有检查后者,因为它很大,而且我对数据集还不够熟悉,无法知道在哪里查看