アットウィキロゴ

sy4p

var a=new Array();
var y=new Array();
var mu=new Array();
var sig=new Array();
var p=new Array();
var delta=new Array();
 
function myFunction() {
 
  var id="1dnEaaI1NReiqMJkoDF80ux_TXK-AHp3OB4d79obExiI"; 
 ex1 = SpreadsheetApp.openById(id);
 var sheet = ex1.getSheetByName("data");
 
 
for(s=2;s<23;s++){
a[s-1]=sheet.getRange(s, 2).getValue();  
y[s-1]=50*s-75;
}
 
 
 
 
  for(s=1;s<11;s++){ 
mu[s]=100*s;
sig[s]=30;    
p[s]=0.1;
  }
 
 
  for(s=1;s<22;s++){
  delta[s]=new Array();
  }
 
 
  for(tr=1;tr<11;tr++){
 
 
for(s=1;s<22;s++){
for(sx=1;sx<11;sx++){
delta[s][sx]=f(y[s],mu[sx],sig[sx])*p[sx];
}}
 
 
 
for(s=1;s<22;s++){
d1=0;
 for(sx=1;sx<11;sx++){
d1=d1+delta[s][sx];
}
for(sx=1;sx<11;sx++){
delta[s][sx]=delta[s][sx]/d1;
}
}
 
  for(sx=1;sx<11;sx++){
  a1=0;
    for(s=1;s<22;s++){
     a1=a1+y[s]*delta[s][sx]*a[s]; 
    }
  a2=0;
     for(s=1;s<22;s++){
     a2=a2+a[s]*delta[s][sx]; 
    }
 
   mu[sx]=a1/a2;
  }
 
 
   for(sx=1;sx<11;sx++){
  a1=0;
    for(s=1;s<22;s++){
   a1=a1+(y[s]-mu[sx])*(y[s]-mu[sx])*delta[s][sx]*a[s]; 
    }
  a2=0;
     for(s=1;s<22;s++){
     a2=a2+a[s]*delta[s][sx]; 
    }
 
  sig[sx]=Math.sqrt(a1/a2);
  if(sig[sx]<1)sig[sx]=1;
   }
 
 
 
 
  for(sx=1;sx<11;sx++){
 
    a1=0;
    for(k=1;k<11;k++){ 
    for(s=1;s<22;s++){
   a1=a1+delta[s][k]*a[s]; 
    }
  }
 
  a2=0;
     for(s=1;s<22;s++){
     a2=a2+a[s]*delta[s][sx]; 
    }
 
 p[sx]=a2/a1;
   }
 
 
 
 
  }
 
 
 for(s=1;s<11;s++){
sheet.getRange(s+1, 5).setValue(mu[s]);
sheet.getRange(s+1, 6).setValue(sig[s]);
sheet.getRange(s+1, 7).setValue(p[s]);
 } 
 
 
 
}
 
 
function f(x,mu,sig){
var pi,f1,f2;
 
        pi=Math.PI;
 
        f2=Math.sqrt(2*pi*sig*sig);
        f1=-(x-mu)*(x-mu)/(2*sig*sig);
 
        return Math.exp(f1)/f2;
}
最終更新:2016年06月29日 06:12