进行t检验时,我收到错误“级别”

时间:2016-05-23 09:41:26

标签: r

我正在进行t测试,我收到此错误“分组因子必须正好有2个级别”。它涉及另一个数据集。你知道“水平”指的是什么吗?

不幸的是,这里的数据太大而无法转移(3x272rows)

2 个答案:

答案 0 :(得分:4)

这是因为您有schoolid的唯一值(级别)超过2个。

例如,此代码会重现您的问题:

n <- 10
dat <- data.frame(
    schoolid = sample(3, n, replace = TRUE), 
    score = runif(n, 0, 100) 
)


t.test(score ~ schoolid, data = dat)
Error in t.test.formula(score ~ schoolid, data = dat) : 
  grouping factor must have exactly 2 levels

t检验仅比较两组之间的平均值。如果您有两个以上的小组,则必须遵循不同的策略。例如,将一个组与所有其他组进行比较。在下一个示例中,您将具有schoolid == 1的组与所有其他组进行比较:

t.test(score ~ schoolid == 1, data = dat)

    Welch Two Sample t-test

data:  score by schoolid == 1
t = 0.55568, df = 17.757, p-value = 0.5854
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -14.02586  24.10004
sample estimates:
mean in group FALSE  mean in group TRUE 
           51.51903            46.48194 

您可能还想考虑完全使用不同的测试。例如,线性模型可以处理多个子组:

model <- lm(score ~ factor(schoolid) - 1, data = dat)
summary(model)

Call:
lm(formula = score ~ factor(schoolid) - 1, data = dat)

Residuals:
    Min      1Q  Median      3Q     Max 
-44.416 -18.396  -5.337  23.672  45.752 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
factor(schoolid)1   46.482      7.772   5.981 2.88e-07 ***
factor(schoolid)2   50.309      6.176   8.146 1.55e-10 ***
factor(schoolid)3   52.729      6.176   8.537 4.07e-11 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 26.92 on 47 degrees of freedom
Multiple R-squared:  0.7883,    Adjusted R-squared:  0.7748 
F-statistic: 58.34 on 3 and 47 DF,  p-value: 7.084e-16

答案 1 :(得分:1)

进行t检验时,比较两组。 school_id有多少可能的值?如果不是两个,您可以解释您的错误。在这种情况下,您应该查看其他测试,例如方差分析。 祝你好运!