微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

来自给定函数 R 代码错误的分位数?

如何解决来自给定函数 R 代码错误的分位数?

我正在使用 R 从给定函数获取分位数,该函数给出了以下错误,我不太明白它的含义。尽管错误消息似乎不言自明,但 R Noob 无法解决。任何帮助表示赞赏。

错误

cum(x) - p 中的错误:二元运算符的非数字参数

代码如下:

library(nleqslv)

dens<-function(x)
{
  (dbeta(x,shape1 = 1,shape2 = 5) + dbeta(x,shape1 = 3,shape1 = 10,shape2 = 5))*1/3
}

cum<-function(x)
{
    integrate(dens,-Inf,x)
}

quant<-function(p)
{
    nleqslv(0,function(x){cum(x)-p})
}


print(quant(0.50))

解决方法

integrate() 不返回单个数字,而是返回一个列表:

names(cum(1))
## [1] "value"        "abs.error"    "subdivisions" "message"      "call"   

您只需要 $value 元素:

quant <- function(p) {
    nleqslv(0,function(x) { cum(x)$value-p })
}

(由于您将 dbeta() 值相加,积分的下限可能是 0 而不是 -Inf ?)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。