//
//outlook function
//This founction extracts value of assinged variable name on some condition from file..
//
//Syntax This function allows num of variable argument.
outlook(filename,varialbe1,value1,,,variableN,valuen,last_variable);
filename :extract value from filename.
variable1,value1`variableN,valueN : conditions (variable name = value)
last_variable :extraced value is at colum of last_variable name
//(Quation1)
//Line number variable '#' is allowed as variable name
//(Quotion2)
//If there are Plural values to be extracted on the assigned condition,first one is extracted.
//
//Example 1
//Reference by outlook
//
hand currency fxrate/
USD 99.8
AUD 92.4
NZD 86.6
EUR 92.5
JPY 1.0
;
put fxrate;
hand currency amount/
JPY 2000
USD 380
AUD 420
;
//convert amount to value by fx rate of the currency.
value = amount * outlook(fxrate,"currency",currency,"fxrate");
//View amount and value of each currency.
plot bar amount value by currency;
//
//Example 2
//Generate normal distribution which has same covariance with original data.
//
//Read data as original covariance.
get school.csv@;
//Get correlation for input of cholesky factarization.
corr x1 x2 y;
//Get output corration and save tempolary file to check comparing with generated data.
get freq@ana;
put f_corr;
//Execution cholesky factarization by input of correlation.
chole x1 x2 y;
//Get output cholesky matrix and save tempolary file to use outlook function as below.
get freq@ana;
put f_chole;
//Get average and standard devietaion by statis command to use outlook function as below.
get school.csv@;
statis x1 x2 y;
//Save average and std. to tempolary file.
get freq@ana;
put f_stat;
//
//Generate normal distibution which has same average and std,covariance of school.csv.
//
//Declare data clear and vector to use as below.
clear;
vector x[3];
vector ch[3][3];
vector sum[3];
//Generate 500 records which is normal distribution by loop.
for(i=1;i<=500;i++) {
//Get average and std from file by outlook function.
x1m=outlook(f_stat,"_items_","AVERAGE","x1");
x1v=outlook(f_stat,"_items_","STD","x1");
x2m=outlook(f_stat,"_items_","AVERAGE","x2");
x2v=outlook(f_stat,"_items_","STD","x2");
ym=outlook(f_stat,"_items_","AVERAGE","y");
yv=outlook(f_stat,"_items_","STD","y");
//Generate 3 normal distoribution.
x[1]=ranstd(x1m,x1v);
x[2]=ranstd(x2m,x2v);
x[3]=ranstd(ym,yv);
//Make cholesky matrix from file by outlook function.
ch[1][1]=outlook(f_chole,"#",1,"x1");
ch[1][2]=outlook(f_chole,"#",1,"x2");
ch[1][3]=outlook(f_chole,"#",1,"y");
ch[2][1]=outlook(f_chole,"#",2,"x1");
ch[2][2]=outlook(f_chole,"#",2,"x2");
ch[2][3]=outlook(f_chole,"#",2,"y");
ch[3][1]=outlook(f_chole,"#",3,"x1");
ch[3][2]=outlook(f_chole,"#",3,"x2");
ch[3][3]=outlook(f_chole,"#",3,"y");
//Set covariance to normal distribution.
for(j=1;j<=3;j++) {
sum[j]=0;
for(k=1;k<=3;k++) {
sum[j]=sum[j]+ch[j][k]*x[k];
}
}
x1r=sum[1];
x2r=sum[2];
yr =sum[3];
//Output earch reacord.
outrec;
}
//View Genaration of normal distribution which may be same distoribution of school.csv.
plot scat x1r x2r yr;
//Check same correlation comparing generated data with original school.csv data
corr x1r x2r yr;