我们有一个函数。t ~威布尔(alpha,lambda)和c ~指数(beta):
给定p = 0.10
,alpha = 1
,lambda = 4
,求beta
的值。
我们想对t
和c
求这个函数的积分。然后用uniroot
函数求beta
的值,其中积分等于p
。
请参见下面的代码:
alpha = 1
lambda = 4
p = 0.10
func1 <- function(t, c, beta) {alpha * lambda * exp(-lambda * t^ alpha)*
beta * exp(- beta * c) }
func2 <- function(c, beta){integrate(func1, lower = c, upper = Inf, c=c,
beta=beta)}
func3 <- function(beta){integrate(func2, lower = 0, upper = Inf, beta =
beta)$value - cen.p}
uniroot(func3 ,lower = 0.001, upper = 10, extendInt = "yes")$root
但是,它会抛出错误:
积分时出错(func 1,下限= c,上限= Inf,c = c,beta = beta):长度(下限)== 1非TRUE
答案应为0.444
1条答案
按热度按时间aurhwmvo1#
我更正了拼写错误(将
cen.p
替换为p
),并将func2
和func3
的函数参数向量化,因为integrate
函数返回一个值(标量)。但是,作为第一个参数,integrate
应该接受数值向量,而不是标量。输出量: