我写了段程序,在iml中定义了一些函数,然而在主程序中却提示:无法找到uulocaltau函数,请问这是为什么?
是因为在iml中定义的函数无法在data中使用?
顺便再请假一下,如何把数组输出成3d图?谢谢。
/********** 0. Define internal expressions for double integral *************/
proc iml;
/************ 7. Upper-Upper Local Kendall's tau ***************/
start uulocaltau(current_p,current_q,copula_par);
copulavalue = clayton_copula(current_p,current_q,copula_par);
db_clayton_copula_X_diffxy = outter_clayton_copula_X_diffxy(current_p,current_q,copula_par);
db_copula_p_X_diffxy = outter_copula_p_X_diffxy(current_p,current_q,copula_par);
db_copula_q_X_diffxy = outter_copula_q_X_diffxy(current_p,current_q,copula_par);
db_u_v_X_diffxy = outter_u_v_X_diffxy(current_p,current_q,copula_par);
tauMainUU = (2*(copulavalue+1)*(1-current_p-current_q+copulavalue) + 4*db_clayton_copula_X_diffxy - 2*db_copula_p_X_diffxy - 2*db_copula_q_X_diffxy - 2*db_u_v_X_diffxy)/((1-current_p-current_q+copulavalue)**2) - 1;
return (tauMainUU);
finish;
/*********** End **************/
/*********************************************************************************/
/*********************************************************************************/
/************ Main program:Surface of Upper-Upper Local Kendall's tau ***********/
/*********************************************************************************/
/*********************************************************************************/
data tauUU;
array tauMainUU{46,46};
i=1;
j=1;
copula_par = 1.2; /**** parameter of copula function ****/
do current_p = 0.5 to 0.95 by 0.01;
do current_q = 0.5 to 0.95 by 0.01;
tauMainUU = uulocaltau(current_p,current_q,copula_par);
j = j + 1;
end;
i = i + 1;
j = 1;
end;