【发布时间】:2014-08-05 17:28:20
【问题描述】:
所以我不太确定实现我想做的最好的方法。
这是我的问题:我在 R 中使用包小鼠的多重插补,并且我使用 cox.zph 函数来获取每个插补模型的残差。我想对所有估算的残差进行平均,以获得每个变量的一个值。老实说,我不知道如何实现这一目标。我看过 lapply 和 mapply。
res.scho <- NULL
for (i in 1:m) {
res.scho[[i]] <- cox.zph(modf$analyses[[i]])
}
res.scho[[1]]
rho chisq p
Alc=1 0.0622 0.552 4.58e-01
HIV=1 0.1050 1.873 1.71e-01
Diabetes=1 -0.1240 2.227 1.36e-01
age -0.1388 2.877 8.99e-02
GLOBAL NA 44.467 5.97e-08
基本上我有 m 个估算数据集和 res.scho[[m]],我想将每个 res.scho 合并为一个。
我仍然非常纠结于在其他语言中使用的 forloops,并且在使用 mapply 时遇到了一些问题。这可能是问题之一。不过,如果有人能给我一些指导以帮助我实现这一目标并更好地使用 R,我将不胜感激。
谢谢!
编辑
预期输出:
假设我有两个估算数据集。 m=2
res.scho[[1]]
rho chisq p
Alc=1 0.0622 0.552 4.58e-01
HIV=1 0.1050 1.873 1.71e-01
Diabetes=1 -0.1240 2.227 1.36e-01
age -0.1388 2.877 8.99e-02
GLOBAL NA 44.467 5.97e-08
res.scho[[2]]
rho chisq p
Alc=1 0.0522 0.752 5.58e-01
HIV=1 0.1550 1.473 2.71e-01
Diabetes=1 -0.1140 2.927 4.36e-01
age -0.1188 2.077 3.99e-02
GLOBAL NA 44.400 7.97e-08
我想要的输出与列表的形式相同,但每个值都是两者的平均值,例如:
Average_res.scho
rho chisq p
Alc=1 0.0572 0.652 5.08e-01
HIV=1 0.1300 1.673 2.21e-01
Diabetes=1 -0.1190 2.577 2.86e-01
age -0.1288 2.477 4.24e-02
GLOBAL NA 44.433 6.97e-08
比如rho的列是通过colum (res.scho[[1]] + res.scho[[2]]) /2得到的
EDIT1
按照 konvas 的建议,我正在尝试使用他的想法来获得所需的输出。这是我目前所拥有的:
rho <- NULL
chisq <- NULL
p <- NULL
for (i in 1:70) {
rho[[i]] <- res.scho[[i]]$table[,"rho"]
chisq[[i]] <- res.scho[[i]]$table[,"chisq"]
p[[i]] <- res.scho[[i]]$table[,"p"]
我已经为 res.scho 的每一列提取了一个列表 - 这不是完美的解决方案。所以如果我做 rho[[1]] 我会看到第一列
[[1]]
CliForm=1 Sit=2 Alc=1 HIV=1 Diabetes=1 age GLOBAL
0.17300198 -0.45800541 0.06224951 0.10495093 -0.12401631 -0.13879592 NA
现在,我会为 rho、chisq 和 p 考虑这个问题:
for (i in 1:70) {
result <- sapply(names(rho[[1]]),
function(x) colMeans(sapply(rho, "[[", x)))
}
我得到了以下我一直在尝试解决的错误:
Error in colMeans(sapply(rho, "[[", x)) : 'x' must be an array of at least two dimensions
【问题讨论】:
-
cox.zph只是测试参数的重要性。没有与该测试关联的残差,拟合值与预测值的残差与您传递给测试的模型拟合相关联。残差可能在modf$analysis列表中。您可以使用resid(modf$analysis[[i]])提取它们。如果您在谈论测试统计的残差,您将必须定义您的意思。我不明白你想如何组合这些结果。 -
感谢您的评论@MrFlick。你说得对,我应该更清楚。 cox.zph 测试 Cox 回归的比例风险假设,我希望将 m 个输出合并为一个。关键是我是在谈论残差还是测试并不重要,因为我们的想法是如何对所有这些进行平均以仅提供一个列表。我将提供预期的输出。希望这会让一切更清楚。