功能无法正确循环

时间:2019-02-24 17:04:29

标签: r function for-loop

我创建了一个函数,用于计算观察事件的概率。这是代码:

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)

0 个答案:

没有答案