gpt4 book ai didi

r - 在 R 中,如何估算低于检测限的左删失数据?

转载 作者:行者123 更新时间:2023-12-02 19:13:36 25 4
gpt4 key购买 nike

这可能是一个简单的问题,但我就是无法解决。我有一个生物化学测试结果的数据框。其中一些测试如 base_crp返回类似 <3 的值因为检测的限制。在继续之前我需要估算这些数据。我想正确地执行此操作,而不仅仅是替换。

我尝试了来自zCompositions的multLN但似乎认为所有的包<3值为负(错误显示 X contains negative values )。似乎也没有太多文档 - 这是一个不起眼的包吗?

我还查看了LODI但它希望我指定插补模型的协变量 - 有没有正确的方法来选择这些变量?无论如何,我选择了 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 是我要修复的变量。我将所有 <3 替换为 NA并插入一个新列 all$crplim <- "3" 。然而,这只是回归 Error in sprintf("%s must be numeric.") : too few arguments .

即使我能让 LODI 工作,我也不确定它是否是正确的工具。我只是一名本科生,几乎没有统计背景,所以我不太明白我在做什么——我只是想要一些用数字填充列的东西,这样我就可以继续使用 PIL 逊相关性和线性回归等。我真的很感激一些帮助。提前致谢。

最佳答案

我之前做过一些 CRP(C react 蛋白)水平的统计建模 - 请参阅 this peer-reviewed paper举个例子。 CRP 呈近似对数正态分布,所有测试指标的未选择人群中的中值通常约为 3.5 mg/l(大多数健康人属于“<3mg/l”类别)。您可能不想使用插补模型,因为这些模型用于缺失数据。低 CRP 数据没有丢失。您已经知道它位于某个范围内,因此如果您以这种方式进行插补,您就会丢失信息。

将“<3”替换为回归等的数值是合理的,只要您使用它来将 CRP 与临床结果等相关联,而不是(正如 Ben Norris 指出的那样)用于 CRP 机器校准。

我可以从我上面链接的研究中超过 10,000 个高灵敏度 CRP 测量样本的数据告诉您,CRP < 3 的人的平均 CRP 约为 1.3,并且将您的所有“对于大多数真实世界的临床观察研究,CRP < 3"测量值为 1.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,都没有什么区别得出您试图得出的结论。

关于r - 在 R 中,如何估算低于检测限的左删失数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63936449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com