【发布时间】:2014-01-10 18:57:26
【问题描述】:
对于给定的观测向量 x 和给定的参数向量(长度为 5)theta0,下面的代码会生成对这些参数进行更好估计的向量 theta1。
part1=(1-theta0[5])*dnorm(x,theta0[1],theta0[3])
part2=theta0[5]*dnorm(x,theta0[2],theta0[4])
gam=part2/([part1+part2)
denom1=sum(1-gam)
denom2=sum(gam)
mu1=sum((1-gam)*x)/denom1
sig1=sqrt(sum((1-gam)*((x-mu1)^2))/denom1)
mu2=sum(gam*x)/denom2
sig2=sqrt(sum(gam*((x-mu2)^2))/denom2
p=mean(gam)
theta[1] <- c(mu1,mu2,sig1,sig2,p)
我的问题是如何在不重新编写代码的情况下迭代过程?我希望 theta1 替换我的原始估计向量,theta0、theta2 替换 theta1 等。收敛速度相当慢,所以我想必须执行 10000 次迭代。有没有方便的捷径?
PS 您可能会说,我是 R 的初学者,所以请尽量保持简单。谢谢。
【问题讨论】:
-
您可以使用 for 循环进行固定次数的迭代。基本语法是:for(i in 1:10000) { do something }。如果您可以测试收敛性,则可以使用 while 循环来检查每次迭代是否达到足够的收敛性。这最大限度地减少了计算时间(但要确保你的算法确实收敛!)。
-
@AlexanderVosdeWael 我该如何替换我的参数向量呢?
-
继续阅读apply函数。
标签: r statistics simulation