我有一个简单的问题。对于t检验和相关性,我已经在R中看到了这种行为。

我做了一个简单的配对t检验(在这种情况下,是两个长度为100的向量)。因此,配对t检验的df应该为99。但这不是t检验结果输出中出现的值。

dataforTtest.x <- rnorm(100,3,1)
dataforTtest.y <- rnorm(100,1,1)
t.test(dataforTtest.x, dataforTtest.y,paired=TRUE)

输出是:
Paired t-test

data:  dataforTtest.x and dataforTtest.y
t = 10, df = 100, p-value <2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
1.6 2.1
sample estimates:
mean of the differences
                1.8

但是,如果我实际查看生成的对象,则df是正确的。
> t.test(dataforTtest.x, dataforTtest.y,paired=TRUE)[["parameter"]]

df
99

我想念一些非常愚蠢的东西吗?
我正在运行R版本3.3.0(2016-05-03)

最佳答案

如果四舍五入的数字的全局设置在R中更改,则可能会发生此问题,这可以通过options(digits = 2)之类的方法来完成。

在更改此设置之前,请注意t测试的结果:

    Paired t-test

data:  dataforTtest.x and dataforTtest.y
t = 13.916, df = 99, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 1.700244 2.265718
sample estimates:
mean of the differences
               1.982981

并设置选项(位数= 2)后:
Paired t-test

data:  dataforTtest.x and dataforTtest.y
t = 13.916, df = 100, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 1.700244 2.265718
sample estimates:
mean of the differences
                      2

因此,在R中,更改全局设置可能很危险。在用户不知情的情况下,它可能会完全改变统计分析的结果。相反,我们可以直接在数字上使用round()函数,或者对于类似这样的测试结果,我们可以将其与broom包结合使用。
round(2.949,2)
[1] 2.95

#and

require(broom)

glance(t.test(dataforTtest.x, dataforTtest.y,paired=TRUE))

estimate statistic      p.value parameter cnf.low cnf.high       method alternative
1.831433  11.31853 1.494257e-19        99 1.51037 2.152496 Paired t-test  two.sided

关于r - 为什么R的t检验函数存在错误和/或不一致的自由度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38922802/

10-09 08:36