最大熵,三硬币模型的R语言代码

#最大熵算法

#《 统计学习方法》最大熵,三硬币模型的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







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值