我定义了两个明显不同的向量:
> x1 = c(3, 4, 3, 4)
> x2 = c(9, 8, 9, 7)
如果我使用 t.test 执行t检验而不将其分配给对象名称,则会得到预期的结果。如:
> t.test(x1, x2)
# Gives the console output:
Welch Two Sample t-test
data: x1 and x2
t = -8.4971, df = 4.927, p-value = 0.000399
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-6.193426 -3.306574
sample estimates:
mean of x mean of y
3.50 8.25
这给出了一个大的t值和一个小的p值,表明两个向量具有不同的均值。但是,如果我将t检验分配给对象名称以通过以下方式创建列表对象:
mean.diff = mean(x1) - mean(x2)
ttst = t.test(
x = x1,
y = x2,
alternative = "two.sided",
mu = mean.diff,
paired = FALSE,
var.equal = FALSE,
conf.level = 0.95
)
结果总是 t值为零,p值为1,这表明两个向量是相同的。无论矢量如何,这种情况都会发生,我只是选择了x1和x2作为示例。
请问导致我的代码出了什么问题?感谢您的帮助。
答案 0 :(得分:3)
在第二个示例中,您正在测试均值差异是否不同于mean.diff
;由于您将mean.diff
计算为x1
和x2
(mean.diff = mean(x1) - mean(x2)
)的均值之差,因此t统计量正好为0,相应的p值最大(即等于1)。因此,我们不能拒绝零假设H0,其中H0对应于均值之差等于mean.diff
。
答案 1 :(得分:1)
您获得的结果与赋值无关:它是由参数mu = mean.diff
引起的。
根据?t.test
,mu是
一个数字,表示平均值的真实值(或者,如果您正在执行两个样本检验,则表示均值之差)。
由于将其设置为均值之差的实际值,因此所得的t将始终等于零。