【问题标题】:Determining percentile based on reference table根据参考表确定百分位数
【发布时间】:2015-05-02 16:11:16
【问题描述】:

我从最近的一篇文章中标准化了儿童心率和呼吸频率的正常值。我将它们复制到 csv 中用作 R 中的数据集。数据只是不同的年龄范围(例如 3 个月到 6 个月,或 1 年到 2 岁),然后是第 1 个百分位数、第 10 个、第 25 个百分位数的心率,该年龄范围的第 50、75、90、99 个百分位。

我想将患者数据与此参考表进行比较,以告诉我他们所处的百分位数。由于这是一个完全正态分布,我不认为这是一项非常艰巨的任务,但它超出了我的 R 范围,我似乎找不到任何关于如何完成此任务的好信息。

【问题讨论】:

    标签: r statistics


    【解决方案1】:

    根据您的解释,我可以建议这个简单的函数,该函数将输入患者的心率和年龄范围,并根据此特定范围的正常密度返回百分位数。

    my.quantile = function(myrange, heart.rate){
      table <- data.frame('range'= c("range1", "range2", "range3"),
                 'mean' = c(120, 90, 60),
                 'sd'   = c(12, 15, 30))
      res <- pnorm(q    = heart.rate,
                   mean = subset(table, range==myrange)$mean,
                   sd   = subset(table, range==myrange)$sd)
      return(res*100)
    }
    
    ### my.quantile("range1", 140) 
    ### [1] 95.22096
    

    根据您所说的,如果它完全正常,您只需要每个范围的均值和方差,对吗?您可以根据呼吸频率对其进行调整。

    编辑:为了从您的分位数表中检索正态分布参数,假设您获得的分位数相当精确:

    i/ 你的平均参数正好是第 50 个百分位

    ii/ 您可以通过取任何其他百分位数来找到标准差,例如,假设您的第 90 个百分位数是 73 拍,第 50 个百分位数是 61 拍:

    (73-61)/qnorm(0.90)
    ### [1] 9.36365
    

    9.36 是您的标准差。从这里开始自动化它应该不是很难。

    注意:如果您的百分位数据不是很精确,您可能需要对每个百分位值重复操作并取平均值。

    【讨论】:

    • 或者您的困难还在于根据表格中的百分位数检索均值和标准差?
    • 非常感谢!!优秀!如何从仅知道分位数数据中轻松得出均值/标准差?我想我可以用老式的方法来做,但我确信 R 有一种简单的方法来计算它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 2019-10-02
    • 1970-01-01
    • 2020-05-28
    • 2017-12-15
    • 2021-06-05
    相关资源
    最近更新 更多