アットウィキロゴ

MCMC法7

var d=new Array();
var c=new Array();
var th=new Array();
var ths=new Array();
var point=new Array();
var z=new Array();
 
function sample(){
 
for(s=1;s<101;s++){
th[s]=new Array();    
ths[s]=new Array();
}
 
 
 d[1]=59;
 d[2]=44;
 d[3]=45;
 d[4]=62;
 d[5]=54;
 d[6]=32;
 d[7]=57;
 d[8]=45;
 d[9]=62;
 d[10]=46;
 
 
for(tr=1;tr<101;tr++){
 
 for(s=1;s<11;s++){
 c[s]=1;    
 }
 
 for(s=11;s<101;s++){
 n1=10*Math.random();
 n2=Math.floor(n1)+1;       
 c[n2]=c[n2]+1;    
 }
 
 
 for(s=1;s<11;s++){
 th[tr][s]=c[s];    
 }
 
 
 
 
 
 
 
 
}
 
maxmu=0;
minmu=9999;
 
for(s=1;s<101;s++){
m1=0;
for(sx=1;sx<11;sx++){
m1=m1+th[s][sx]*d[sx];
}    
m1=m1/100;
if(m1>maxmu)maxmu=m1;
if(m1<minmu)minmu=m1;
}    
 
maxsig=0;
minsig=9999;
 
for(s=1;s<101;s++){
a1=0;
for(sx=1;sx<11;sx++){
a1=a1+th[s][sx]*d[sx];    
}
a1=a1/100;
m1=0;
for(sx=1;sx<11;sx++){
m1=m1+th[s][sx]*(d[sx]-a1)*(d[sx]-a1);
}    
m1=m1/100;    
if(m1>maxsig)maxsig=m1;
if(m1<minsig)minsig=m1;
}        
 
var timer;
var delay = 1000;
 
var loop = function () {
 
 
for(tr=1;tr<101;tr++){    
m1=1;
for(s=1;s<11;s++){
m1=m1*th[tr][s]/100;   
}
point[tr]=m1;
}
 
tx=0;
for(s=1;s<101;s++){
for(sx=1;sx<point[s]+1;sx++){
tx=tx+1;
z[tx]=s;
}    
}
 
number=tx;
 
 
 
for(tr=1;tr<101;tr++){
n1=number*Math.random();
n2=Math.floor(n1)+1;
m=z[n2];        
for(s=1;s<11;s++){
ths[tr][s]=th[m][s];    
}
}
 
for(tr=1;tr<101;tr++){
for(s=1;s<11;s++){
th[tr][s]=ths[tr][s];    
}
}
 
 
paint();
 
 
 
clearTimeout(timer);
    timer = setTimeout(loop, delay);
}
 
loop();
 
 
 
 
} 
 
function paint(){
 
var mu=new Array();
var sig=new Array();
 
for(s=1;s<101;s++){
m1=0;
for(sx=1;sx<11;sx++){
m1=m1+th[s][sx]*d[sx];
}    
mu[s]=m1/100;    
}    
 
 
for(s=1;s<101;s++){
m1=0;
for(sx=1;sx<11;sx++){
m1=m1+th[s][sx]*(d[sx]-mu[s])*(d[sx]-mu[s]);
}    
sig[s]=m1/100;    
}        
 
 
 
var sub=new svgpaint();
 
str="<svg width=\"500\" height=\"500\">";
 
str=str+sub.line(0,0,0,500,3,"blue");    
 str=str+sub.line(0,500,500,500,3,"blue");    
for(s=1;s<101;s++){
y1=500*(mu[s]-minmu)/(maxmu-minmu);
x1=500*(sig[s]-minsig)/(maxsig-minsig);
str=str+sub.rect(x1,500-y1,5,5,"red");    
}
str=str+"</svg>";
 
$("#memo").html(str);   
 
}
最終更新:2016年05月05日 20:59