如何解决来自给定函数 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 举报,一经查实,本站将立刻删除。