【问题标题】:when performing t-test, I'm getting an error "levels"执行 t 检验时,我收到错误“级别”
【发布时间】:2016-05-23 09:41:26
【问题描述】:

我正在执行 t 检验,我收到此错误“分组因子必须恰好有 2 个级别”。它与另一个数据集有关。你知道“等级”指的是什么吗?

不幸的是数据太大,无法在这里传输(3x272rows)

【问题讨论】:

  • 有一个look at this
  • 除了@Sotos,对于未来的问题,请尝试提供一个最小的数据集(例如dput(head(df)),其中df是您的数据集;这给了我们6行数据)以及重现您收到的错误的代码(如果它不适用于最小数据集,请尝试使用 head(df, 100) 例如)。我认为这就是您的问题被否决的原因,因为很难仅通过一条错误消息来帮助某人。
  • 感谢您帮助我了解该论坛的运作方式。所以这是 dput 结构的结果(list(schoolid = c(1L, 1L, 1L, 1L, 1L, 1L), score = c(0L, 10L, 0L, 40L, 42L, 4L), gender = c(0 , 0, 0, 0, 0, 0)), .Names = c("schoolid", "score", "gender"), row.names = c(NA, 6L), class= "data.frame")与此同时,我阅读了 Sotos 建议的链接并将 delta 符号更改为逗号,我收到了另一条错误消息,这次是“t.test(score, schoolid) 中的错误:找不到对象'score'”
  • 这似乎根本不是一个编程问题。相反,它似乎是一个通用的 R 用法问题,因此在 Stack Overflow 上是题外话。
  • 在你的辩护中,使用 R 和在 R 中编程之间的区别有点模糊。 r 标签建议更直接的统计问题:stats.stackexchange.com。我没有使用过那个网站,所以我不太确定你的问题是否会成为主题,尽管它可能更适合。

标签: r


【解决方案1】:

发生这种情况是因为您拥有超过 2 个 schoolid 的唯一值(级别)。

例如,这段代码重现了您的问题:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-07-31
      • 2013-08-07
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 2017-07-25
      • 1970-01-01
      • 2022-10-13
      • 2013-06-02
      相关资源
      最近更新 更多