【问题标题】:How to perform a one-sample t-test for each row in just one column in R?如何对 R 中仅一列中的每一行执行单样本 t 检验?
【发布时间】:2019-12-29 12:58:58
【问题描述】:

在我的数据集中,我有 14 列,最初是 48 行。我将行大小减少到 2,因为在 R 上处理问题对我来说更容易,就像这样。 第一列包含参与者编号,第 14 列是每个参与者的已聚合平均值,称为“dprime_mean”。

names(signal_table)
 [1] "vpn"         "t_hit"       "t_miss"      "t_correj"    "t_false"    
 [6] "at_hit"      "at_miss"     "at_correj"   "at_false"    "t_dprime"   
[11] "t_crit"      "at_dprime"   "at_crit"     "dprime_mean" 

我想对每个参与者“dprime_mean”针对 mu = .15 和替代 =“greater”执行单样本单边 t 检验。无需将相同的测试输入 48 次(暂时是两次)。

我已经试过了:

pValues <- apply(signal_table, 1, function(x) t.test(x[14],
                            mu=0.15, alternative = "greater")$p.value)

但是得到以下错误:

Error in t.test.default(x[14], mu = 0.15, alternative = "greater") : 
  not enough 'x' observations

我能做什么?有人可以帮助我,请善待,我在这篇文章中尽了最大的努力:)

【问题讨论】:

    标签: r foreach row t-test


    【解决方案1】:

    运行时:

    pValues <- apply(signal_table, 1, function(x) t.test(x[14],
                                mu=0.15, alternative = "greater")$p.value)
    

    apply 正在遍历行,因此 x 是单行。您正在挑选该行的第 14 个值并在其上运行 t.test。所以归结为:

    > t.test(1.2345,mu=0.15,alternative="greater")
    Error in t.test.default(1.2345, mu = 0.15, alternative = "greater") : 
      not enough 'x' observations
    

    要运行 t 检验,您需要进行大量观察。如果没有大量观测值以拟合分布,您无法判断 1.234 是否大于 0.15。

    R 可以在 t 检验中处理两个数字,例如,如果我的测量值是 0.23 和 0.21,这是否来自均值大于 0.15 的分布?

    > t.test(c(0.23,0.21), mu=0.15, alt="greater")
    
        One Sample t-test
    
    data:  c(0.23, 0.21)
    t = 7, df = 1, p-value = 0.04517
    alternative hypothesis: true mean is greater than 0.15
    95 percent confidence interval:
     0.1568625       Inf
    sample estimates:
    mean of x 
         0.22 
    

    是的,看起来是这样。如果我的数据是 0.14 和 0.16 怎么办?

    > t.test(c(0.14,0.16), mu=0.15, alt="greater")
    
        One Sample t-test
    
    data:  c(0.14, 0.16)
    t = 2.7756e-15, df = 1, p-value = 0.5
    alternative hypothesis: true mean is greater than 0.15
    95 percent confidence interval:
     0.08686248        Inf
    sample estimates:
    mean of x 
         0.15 
    

    嗯,也许不是,看看那些 95% 的置信区间。

    总之,这个错误是因为你给t.test提供了一个单一的值,我不知道你为什么认为这是有意义的或者你真正想要测试的......

    【讨论】:

    • 非常感谢!我已经为其他一些分析计算了每个参与者的观察平均值。并认为我可以在 t.test 中使用它。显然我只需要使用我的原始数据而不是已经计算的平均值。我认为问题已解决:)
    猜你喜欢
    • 2018-11-19
    • 2020-09-05
    • 2018-10-09
    • 2020-06-25
    • 2016-11-23
    • 2020-08-06
    • 2017-05-17
    • 2013-06-02
    • 2020-08-30
    相关资源
    最近更新 更多