首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在R中,你如何估算出在检测极限以下的左截尾数据?

在R中,你如何估算出在检测极限以下的左截尾数据?
EN

Stack Overflow用户
提问于 2020-09-17 10:50:27
回答 1查看 608关注 0票数 2

这可能是个简单的问题,但我就是想不出来。我有一份生化测试结果的数据。一些像base_crp这样的测试由于检测的限制而返回像<3这样的值。在前进之前,我需要对这些数据进行推测。我想好好地做这件事,所以不只是代替。

我尝试了multLN包中的zCompositions,但是它似乎认为所有的<3值都是负值(X contains negative values说的是错误)。这里似乎也没有太多的文档--这是一个模糊的包吗?

我也看过洛迪,但它想让我为估算模型指定协变量--是否有正确的方法来选择这些变量?总之,我选择了理论上关联良好的3种代码,并使用了以下代码:

代码语言:javascript
运行
复制
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相关性和线性回归等等。我真的很希望在这方面提供一些帮助。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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测量无法区分的数字:

代码语言:javascript
运行
复制
impute_crp <- function(n)
{
   x <- exp(rnorm(10 * n, 1.355, 1.45))
   round(x[x < 3][seq(n)], 1)
}

所以你可以

代码语言:javascript
运行
复制
impute_crp(10)
#> [1] 1.5 2.0 1.1 0.4 2.5 0.1 0.7 1.5 1.4 0.4

代码语言:javascript
运行
复制
base_crp[base_crp == "<3"] <- impute_crp(length(which(base_crp == "<3"))

但是,您会注意到,我在我自己的CRP模型中根本没有使用估算。用检测阈值代替较低的值对于建模来说已经足够好了--我很确定你是用对数正态分布的尾巴代替"< 3“,还是全部用1.3,或者全部2,这对你试图得出的结论没有任何影响。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63936449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档