【问题标题】:How to apply a t-test for a whole table with NAs in R如何在 R 中对具有 NA 的整个表应用 t 检验
【发布时间】:2020-10-09 02:33:05
【问题描述】:

我的桌子有点像这样:

date        factor1      factor2     factor3
1973-01-31  3.112309    1.011383    NA
1973-02-28  2.120466    11.021701    NA
1973-03-31  1.125156    0.030822    1.011383    
1973-04-30  11.135342   1.067682    1.067682    
1973-05-31  NA          -1.069136    1.071959    
1973-06-30  1.139889    1.071959    1.034

我正在尝试使用 NeweyWest 方法计算 t 值来检验每列的平均值等于 0 的假设。

coeftest(lm(data~1), vcov = NeweyWest(lm(data~1), lag = 6, prewhite = F, adjust = T))

但是,我总是收到错误代码:

Error in dimnames(x) <- dn : 
  length of 'dimnames' [1] not equal to array extent

我很确定这是由于我的表中的 NA。我尝试使用lm 函数的na.action。然而,这并没有奏效。我可以单独计算每列的 t 值,但我正在寻找一种解决方案来一次计算整个表的 t 值,因为它是一个巨大的表。有没有人有想法解决我的问题?我非常感谢每一个提示。

【问题讨论】:

  • 也可能是您在函数需要向量时尝试传递数据帧。您可能需要使用 apply 函数才能使其工作。
  • 表格为xts 格式。我可以使用函数coeftest(lm(as.integer(data$factor1)~1), vcov = NeweyWest(lm(as.integer(data$factor1)~1), lag = 6, prewhite = F, adjust = T)) 计算一列的 t 值是否有任何机会使用一个函数为整个表计算这个值?

标签: r xts lm


【解决方案1】:

可能您必须估计缺失值,例如https://stats.stackexchange.com/questions/26326/how-to-estimate-missing-data

或者寻找一些所谓的鲁棒方法(鲁棒 t 检验)。

【讨论】:

    猜你喜欢
    • 2015-04-18
    • 2014-10-12
    • 2015-05-17
    • 2022-07-20
    • 2017-05-17
    • 2021-05-21
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    相关资源
    最近更新 更多