#最大熵算法
#《 统计学习方法》最大熵,三硬币模型的R语言代码
有3个硬币,分布为A、B、C,硬币正面的概率是pai,p,q。投币实验如下,先投A,如果A是正面,即A=1,那么选择投B;A=0,投C。
最后,如果B或者C是正面,那么y=1;是反面,那么y=0;
投n次,n=0,结果序列是 :1,1,0,1,0,0,1,0,1,1
Θ是向量pai,p,q。
y是观察到的硬币最终的正反面。
Z是硬币A的投掷结果,是没有未观察到的。
theta=c(0.4,0.6,0.7); pai=theta[1]; p=theta[2]; q=theta[3]; y=c(1,1,0,1,0,0,1,0,1,1); n=length(y); u=seq(1,10,by=1); for(i in 1:100) { for( j in 1:n) { t=pai*p^y[j]*(1-p)^(1-y[j]); s=(1-pai)*q^y[j]*(1-q)^(1-y[j]); u[j]= t/(t+s); } pai=1.0*(sum(u))/n; p=sum(u*y)/sum(u); q=sum((1-u)*y)/sum(1-u); } pai p q