在书上看到的程序,结果运行且有好多错误,望高手帮我解答一下,问题出在什么地方。谢谢。
exam=function(Y,ep=1e-5){
phi=function(x)1/sqrt(2*pi)*exp(-x^2/2)
p=0.6;mu=3.5;n=length(Y)
k=1
repeat{
k=k+1
p[k]=1/n*p[k-1]*sum(phi(Y-mu[k-1])/p[k-1]*phi(Y-mu[k-1])+(1-p[k-1])*phi(Y)))
mu[k]=sum(phi(Y-mu[k-1])*Y/(p[k-1]*phi(Y-mu[k-1])
+(1-p[k-1])*phi(Y)))/sum(phi(Y-mu[k-1])/(p[k-1]*phi(Y-mu[k-1])
+(1-p[k-1])*phi(Y)))
if(abs(p[k]-p[k-1])<=ep&abs(mu[k]-mu[k-1])<=ep)
break
}
list(p=p,mu=mu,iter=k-1)
}
错误提示如下:
p[k]=1/n*p[k-1]*sum(phi(Y-mu[k-1])/p[k-1]*phi(Y-mu[k-1])+(1-p[k-1])*phi(Y)))"
> mu[k]=sum(phi(Y-mu[k-1])*Y/(p[k-1]*phi(Y-mu[k-1])
+ +(1-p[k-1])*phi(Y)))/sum(phi(Y-mu[k-1])/(p[k-1]*phi(Y-mu[k-1])
+ +(1-p[k-1])*phi(Y)))
错误: 没有"phi"这个函数
> if(abs(p[k]-p[k-1])<=ep&abs(mu[k]-mu[k-1])<=ep)
+ break
错误: 找不到对象'ep'
> }
错误: 意外的'}'在" }"里
> list(p=p,mu=mu,iter=k-1)
$p
[1] 0.6
$mu
[1] 3.5
$iter
[1] 0
> }
错误: 意外的'}'在"}"里
>