我创建了一个函数,用于计算观察事件的概率。这是代码:
eq1 <- function(theta1, theta2, lambda){
vektorN = (1:100)
loopVerdi = 0
if(deltakere[i]>=2){
for (N in deltakere[i]:20000) {
density = (
(N) *
(N-1) *
(pWEI2(bud[i], theta1, theta2))^(N-2) *
pWEI2(bud[i], theta1, theta2, lower.tail = FALSE) *
dWEI2(bud[i], theta1, theta2)) /
(1-(pWEI2(r, theta1, theta2))^N)
ngittN =
dbinom(deltakere[i], size = N,
prob = pWEI2(r, theta1, theta2, lower.tail = FALSE))
sN =
dpois(N, lambda)
loopVerdi = loopVerdi + (density * ngittN * sN)
}
return(loopVerdi)
}
}
我想在所有观察过程中都运行该函数,这在我做一个简单的for循环时很好
ola <- 1:length(bud)
for (i in 1:length(bud)){
ola[i] <- eq1(theta1=1, theta2=2, lambda=7)
}
由于我想对似然函数执行最大似然法,因此我需要上面的循环才能成为函数本身。但是,当我定义新函数时,对于所有观察结果,它都产生相同的概率值(我知道这是错误的)。 下面的代码有什么问题?
hello <- function(theta1, theta2, lambda) {
ola <- 1:length(bud)
for (i in 1:length(bud)){
ola[i] <- eq1(theta1, theta2, lambda)
}
return(ola)
}
test <- hello(theta1=1,theta2=2,lambda=7)