基础知识 - T检验 -> 分组因素必须恰好有两个水平。

11
我对R比较陌生。我的作业要求我首先通过进行T检验来查看政治家(保守党或工党)的财富对其实际总财富和实际净财富的影响。我必须尝试使用简单的t检验估计在任期间服务的财富的影响。
数据集称为takehome.dta。
Labour和Tory是二进制的,其中1表示他们为该党服务,否则为0。
财富变量为lnrealgross和lnrealnet。
我已经导入并附加了数据集,但是当我尝试进行简单的t检验时,我收到以下消息“分组因素必须恰好有2个级别。”不太确定我出了什么问题。任何帮助将不胜感激!

1
请添加示例数据并展示您的代码(参见这些制作可重现示例的指南)。 - Christopher Bottoms
3个回答

18

你在做这个吗:

t.test(y~x)

当你想要做这样的事情时

t.test(y,x)

通常在使用 ~ 时,您会得到如下所示的数据:

y <- 1:10
x <- rep(letters[1:2], each = 5)

当你有像这样的数据时,, 会出现

y <- 1:5
x <- 6:10

我假设你正在做以下操作:

y <- 1:10
x <- rep(1,10)
t.test(y~x) #instead of t.test(y,x)

因为错误提示表明您在分组因子 x 中没有任何变化


1
我刚刚尝试了使用t.test(y,x)而不是t.test(y~x),它起作用了!谢谢! - Chris Thwaites
2
这个例子中,~和,运算符有什么区别? - cuneyttyler
嘿@cuneytyvz,要看看区别,请尝试:x <- rnorm(10); y <- 1:10; par(mfrow=c(1,2)); plot(y,x);plot(y ~ x) - user1317221_G

5

~和,之间的区别在于你运行的统计测试的类型。 ~给出平均差异。这适用于相关样本(例如,之前和之后). ,给出平均数的差异。这适用于独立样本(例如,治疗组和对照组)。这两个测试不能互换使用。


1
这是不正确的。函数调用中的开关paired实现了相关/独立样本的区分,与您是通过两个数字向量t.test(x, y, paired=T)还是通过一个带有两个级别的因子向量的较长向量来指示样本无关。df <- data.frame(z = c(x,y), f = rep("a", "b", each = length(x))); t.test("z ~ f", paired = T, data = df)。请参阅此sthda易用指南 - Fons MA

1
我曾遇到类似的问题,但没意识到我的数据集中,一个y值在某个级别上没有数值。我针对两组进行了一系列基因读数,其中一个基因只有第二组的读数,而没有第一组的读数。我甚至没有注意到这个问题,但不知为何它引起了与级别过多时相同的错误。解决方法是将该y值或在我的情况下该基因从分析中删除,然后问题就解决了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接