这可能是个简单的问题,但我就是想不出来。我有一份生化测试结果的数据。一些像base_crp
这样的测试由于检测的限制而返回像<3
这样的值。在前进之前,我需要对这些数据进行推测。我想好好地做这件事,所以不只是代替。
我尝试了multLN包中的zCompositions,但是它似乎认为所有的<3
值都是负值(X contains negative values
说的是错误)。这里似乎也没有太多的文档--这是一个模糊的包吗?
我也看过洛迪,但它想让我为估算模型指定协变量--是否有正确的方法来选择这些变量?总之,我选择了理论上关联良好的3种代码,并使用了以下代码:
clmi.out <- clmi(formula = log(base_crp) ~ base_wcc + base_neut + base_lymph, df = all, lod = crplim, seed = 12345, n.imps = 5)
其中base_crp是我试图修复的变量。我用NA
替换了所有<3,并插入了一个新的列all$crplim <- "3"
。但是,这只是返回Error in sprintf("%s must be numeric.") : too few arguments
。
即使我能让洛迪工作,我也不确定它是否是正确的工具。我只是一个本科大学生,没有什么统计背景,所以我不太明白我在做什么--我只是想要一些数据填充到列中的东西,这样我就可以继续使用Pearson相关性和线性回归等等。我真的很希望在这方面提供一些帮助。提前谢谢。
发布于 2020-09-17 13:07:53
我以前做过一些CRP (C反应蛋白)水平的统计建模--以这篇同行评议的论文为例。CRP的分布大致为对数正态分布,在所有检测指标中,未选定人群的中位数通常在3.5毫克/升左右(大多数健康人将属于"<3mg/l“类)。您可能不想使用估算模型,因为这些是用于丢失数据的。低CRP数据没有丢失。你已经知道它在一个特定的范围内,所以如果你这样做,你就会失去信息。
将"<3“替换为回归等的数值是合理的,只要您使用此值将CRP与临床结果等联系起来,而不是(正如Ben Norris指出的那样)用于CRP机器校准。
我可以从10,000多个高灵敏度CRP测量样本的数据中得知,在我上面所连接的研究中,CRP <3的人的平均CRP大约是1.3,用1.3来代替所有的CRP<3的测量来代替大多数真实的临床观察研究是合理的。
如果你真的需要对缺少的CRP有合理的数值,你可以计算出对数正态分布的下半部。下面的函数将为您提供可能与实际CRP测量无法区分的数字:
impute_crp <- function(n)
{
x <- exp(rnorm(10 * n, 1.355, 1.45))
round(x[x < 3][seq(n)], 1)
}
所以你可以
impute_crp(10)
#> [1] 1.5 2.0 1.1 0.4 2.5 0.1 0.7 1.5 1.4 0.4
和
base_crp[base_crp == "<3"] <- impute_crp(length(which(base_crp == "<3"))
但是,您会注意到,我在我自己的CRP模型中根本没有使用估算。用检测阈值代替较低的值对于建模来说已经足够好了--我很确定你是用对数正态分布的尾巴代替"< 3“,还是全部用1.3,或者全部2,这对你试图得出的结论没有任何影响。
https://stackoverflow.com/questions/63936449
复制相似问题