google.load("visualization", "1", {packages:["corechart"]});
var point = new Array();
var pointx = new Array();
var x = new Array();
var year = new Array();
var month = new Array();
var p=new Array();
var q=new Array();
function sample() {
var query = "SELECT c1,c2,c3 FROM " +
'1VtwPHha3oAlT8OYevpS998dRH5wKY97zpATb13mD';
var encodedQuery = encodeURIComponent(query);
var url = ['https://www.googleapis.com/fusiontables/v1/query'];
url.push('?sql=' + encodedQuery);
url.push('&key=AIzaSyAH0WCAXRIdHdbI-6bnMSN4kVDDZZmGyqY');
url.push('&callback=?');
$.ajax({
url: url.join(''),
dataType: 'jsonp',
success: function (data) {
var rows = data['rows'];
sx = 0;
for (var i in rows) {
sx = sx + 1;
point[sx]=rows[i][1];
}
number = sx;
mm=12;
yy=1984;
for(s=1;s<number+1;s++){
mm=mm+1;
if(mm>12)yy=yy+1;
if(mm>12)mm=1;
year[s]=yy;
month[s]=mm;
}
p[1]=new Array();
p[2]=new Array();
q[1]=new Array();
q[2]=new Array();
p[1][1]=0.9;
p[1][2]=0.1;
p[2][1]=0.1;
p[2][2]=0.9;
q[1][1]=0.9;
q[1][2]=0.1;
q[2][1]=0.1;
q[2][2]=0.9;
optimal();
for(tr=1;tr<3;tr++){
sigma();
optimal();
theta();
optimal();
}
for(s=0;s<number+1;s++){
x[s]=new Array();
}
x[0][0]="date";
x[0][1]="指標";
x[0][2]="谷山";
for(s=1;s<number+1;s++){
x[s][0]=""+year[s]+"年"+month[s]+"月";
x[s][1]=1*point[s];
x[s][2]=pointx[s];
}
var data =google.visualization.arrayToDataTable(x);
var op = {title: '景気動向指数'};
var chart = new google.visualization.LineChart(document.getElementById('memo'));
chart.draw(data, op);
}
});
}
function sigma(){
var delta=new Array();
delta[1]=1;
for(s=2;s<number+1;s++){
delta[s]=1;
if(point[s-1]>point[s])delta[s]=2;
}
s1=0;
for(s=1;s<number+1;s++){
if(delta[s]==1)s1=s1+1;
}
s2=0;
for(s=1;s<number+1;s++){
h=0;
if(delta[s]==1)h=h+1;
if(pointx[s]>100)h=h+1;
if(h==2)s2=s2+1;
}
p[1][1]=s2/s1;
p[1][2]=1-p[1][1];
s1=0;
for(s=1;s<number+1;s++){
if(delta[s]==2)s1=s1+1;
}
s2=0;
for(s=1;s<number+1;s++){
h=0;
if(delta[s]==2)h=h+1;
if(pointx[s]<100)h=h+1;
if(h==2)s2=s2+1;
}
p[2][2]=s2/s1;
p[2][1]=1-p[2][2];
}
function theta(){
var delta=new Array();
s1=0;
for(s=1;s<number;s++){
if(pointx[s]>100)s1=s1+1;
}
s2=0;
for(s=1;s<number+1;s++){
h=0;
if(pointx[s]>100)h=h+1;
if(pointx[s+1]>100)h=h+1;
if(h==2)s2=s2+1;
}
q[1][1]=s2/s1;
q[1][2]=1-q[1][1];
s1=0;
for(s=1;s<number;s++){
if(pointx[s]<100)s1=s1+1;
}
s2=0;
for(s=1;s<number+1;s++){
h=0;
if(pointx[s]<100)h=h+1;
if(pointx[s+1]<100)h=h+1;
if(h==2)s2=s2+1;
}
q[2][2]=s2/s1;
q[2][1]=1-q[2][2];
}
function optimal(){
var delta=new Array();
delta[1]=1;
for(s=2;s<number+1;s++){
delta[s]=1;
if(point[s-1]>point[s])delta[s]=2;
}
var v=new Array();
var gotos=new Array();
for(s=1;s<number+1;s++){
v[s]=new Array();
gotos[s]=new Array();
}
for(s=1;s<3;s++){
sx=delta[1];
v[1][s]=Math.log(p[sx][s]);
}
for(s=2;s<number+1;s++){
for(sx=1;sx<3;sx++){
n=delta[s];
u1=Math.log(p[sx][n]);
maxv=-999;
k2=0;
for(k=1;k<3;k++){
v1=u1+v[s-1][k]+Math.log(q[k][sx]);
if(v1>maxv)k2=k;
if(v1>maxv)maxv=v1;
}
v[s][sx]=maxv;
gotos[s][sx]=k2;
}
}
var op=new Array();
sx=0;
maxv=-999;
for(s=1;s<3;s++){
if(v[number][s]>maxv)sx=s;
if(v[number][s]>maxv)maxv=v[number][s];
}
op[number]=sx;
for(s=1;s<number;s++){
sx=op[number-s+1];
op[number-s]=gotos[number-s+1][sx];
}
for(s=1;s<number+1;s++){
pointx[s]=80;
if(op[s]==1)pointx[s]=120;
}
}
最終更新:2016年01月12日 04:33