a
是我的data.frame。
如何通过更新Zi_hat
,pi_hat
,theta_hat
的值来运行lambda_hat
功能100次?每次显示pi_hat
,theta_hat
,lambda_hat
Zi <- function(x){
x <- zi_hat=(pi_hat*theta_hat*exp(-theta_hat*a))/(pi_hat*theta_hat*exp(-theta_hat*a)+(1-pi_hat)*lambda_hat*exp(-lambda_hat*a))
pi_hat=(1/n)*sum(zi_hat)
theta_hat=sum(zi_hat)/(sum(zi_hat*a))
lambda_hat=(n*sum(zi_hat))/(n*sum(a)-sum(zi_hat)*sum(a))
c(pi_hat,theta_hat,lambda_hat) #print out the updated data#
if (?>100) break
}
表示“?” 我应该在函数中添加另一个语句来制作make吗?
答案 0 :(得分:0)
你可以试试这个
Zi <- function(x){
counter = 1
while(counter <= 100)
{
x <- zi_hat=(pi_hat*theta_hat*exp(-theta_hat*a))/(pi_hat*theta_hat*exp(-theta_hat*a)+(1-pi_hat)*lambda_hat*exp(-lambda_hat*a))
pi_hat=(1/n)*sum(zi_hat)
theta_hat=sum(zi_hat)/(sum(zi_hat*a))
lambda_hat=(n*sum(zi_hat))/(n*sum(a)-sum(zi_hat)*sum(a))
c(pi_hat,theta_hat,lambda_hat) #print out the updated data#
counter = counter + 1
}
}
答案 1 :(得分:0)
谢谢@cccmir。非常好的例子。 它必须分别返回zi,pi_hat,lambda_hat和theta_hat。
Zi <- function(pi_hat,theta_hat,lambda_hat){
counter = 1
while(counter <= 10000)
{
zi_hat<-(pi_hat*theta_hat*exp(-theta_hat*a))/(pi_hat*theta_hat*exp(-theta_hat*a)+(1-pi_hat)*lambda_hat*exp(-lambda_hat*a))
pi_hat=(1/n)*sum(zi_hat)
theta_hat=sum(zi_hat)/(sum(zi_hat*a))
lambda_hat=(n*sum(zi_hat))/
(n*sum(a)-sum(zi_hat)*sum(a))
counter = counter + 1
}
return(lambda_hat)
}