【发布时间】:2014-07-27 22:00:38
【问题描述】:
我有以下代码
f1 <- function (v1) {
v1^(beta1-1)*exp(-(lambda1*v1)^beta1-(lambda0*(vv/LC-v1))^beta1)
}
f2 <- function (v2) {
v2^(beta1-1)*exp(-(lambda1*v2)^beta1-(lambda0*(vv/UC-v2))^beta1)
}
F_r <- function (vv) {
(1+exp(-(lambda1*vv/LC)^beta1)-exp(-(lambda1*vv/UC)^beta1)
-beta1*lambda1^beta1*
( integrate(f1,lower=0,upper=vv/LC)$value+
integrate(f2,lower=0,upper=vv/UC)$value) )*
(b1^a1/gamma(a1))*vv^(a1-1)*exp(-b1*vv)
}
lambda0<-lambda1<-0.01
beta0<-beta1<-1
LC<-0.2
-UC<-1.2
>a1<-2
>b1<-1
integrate(F_r,lower=0,upper=Inf)$value
由于f1和f2是vv的函数,所以我不知道它应该在F_r里面还是外面。但是,F_r 的值应该介于 0 和 1 之间。如果 f1 和 f2 在 F_r 之外,我有以下消息
##Error in f(x, ...) : object 'vv' not found##
【问题讨论】:
-
您缺少
b1和a1的定义。您需要将vv提供给您的函数f1和f2,以便他们能够使用它,方法是将vv添加到他们的函数签名中并通过integrate调用传递它。 -
我分别为 a1 和 b1 赋值,但还是不行
-
在您对
integrate的两个呼叫中添加“, vv”,例如integrate(f1,lower=0,upper=vv/LC, vv)并将其添加到f1和f2的函数签名中,例如f1 <- function (v1, vv) -
执行 Josilber 建议时出现以下错误“集成错误(f1,lower = 0,upper = vv/LCL_r,vv):达到最大细分数”
-
你的新错误与原来的错误完全无关——一个简单的谷歌搜索应该足以让你从这里开始(或者,如果失败,一个新的 R 问题 显示你的研究试图解决问题)。
标签: r function statistics integration