// //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;