如何调用数据?-经管之家官网!

人大经济论坛-经管之家 收藏本站
您当前的位置> 数据>>

数据资源

>>

如何调用数据?

如何调用数据?

发布:shuiqq19840621 | 分类:数据资源

关于本站

人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!

经管之家新媒体交易平台

提供"微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯"等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

提供微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

下面是我的一个程序,其中涉及到一部分数据调用,我不知道应该用什么命令里执行,看帮助里也感觉不是很清楚,请高手指点一下!是一个关于用遗传算法估计参数的程序,对于遗传算法,要求初始化数据,后面涉及到w1、Cl ...
坛友互助群


扫码加入各岗位、行业、专业交流群


下面是我的一个程序,其中涉及到一部分数据调用,我不知道应该用什么命令里执行,看帮助里也感觉不是很清楚,请高手指点一下!
是一个关于用遗传算法估计参数的程序,对于遗传算法,要求初始化数据,后面涉及到w1、Cldirpr、c、 t等数组的调用,对于前面的w1和Cldirpr,我用比较笨的办法,直接写进去。后面的c和t就不容易写了,应该如何调用,请指点一下!
data bonds040927(label='2004年9月27日上交所22只付息国债收盘价');
input bdname $8. matdt:yymmdd10. freq coupond Cldirpr dur term@;
format matdt yymmdd10.;
label
bdname='债券名称'
matdt='到期日'
freq='年付息频率'
coupond='票面利息'
Cldirpr='市场价格'
dur='久期'
term='年限';
cards;
96国债62006-6-14 1 11.83 114.851.90262 10
97国债42007-9-5 1 9.78 116.6 2.76666 10
99国债52007-8-20 1 3.28 98.48 2.90768
99国债82009-9-23 1 3.3 94.62 4.70122 10
21国债32008-4-24 1 3.27 96.66 3.81898 7
21国债72021-7-31 2 4.26 92.09 12.9768 20
21国债10 2011-9-25 1 2.95 89.13 6.44658 10
21国债12 2011-10-301 3.05 89.67 7.25293 10
21国债15 2008-12-181 3 94.16 4.72472 7
02国债32012-4-18 1 2.54 86 7.355510
02国债10 2009-8-16 1 2.39 90.71 4.77451 7
02国债13 2017-9-20 2 2.6 77.36 11.1914 15
02国债14 2007-10-241 2.65 95.96 3.84993 5
02国债15 2009-12-6 1 2.93 92.5 5.60126 7
03国债11 2010-2-19 1 2.66 90.65 5.63273 7
03国债32023-4-17 2 3.4 80.64 14.6887 20
03国债72010-8-20 1 2.66 89.69 5.63273 7
03国债82013-9-17 1 3.02 87.26 8.06064 10
03国债11 2010-11-191 3.5 93.7 6.36469 7
04国债32009-4-19 1 4.416499.92 4.61904 5
04国债42011-5-25 1 4.89 101.046.17962 7
04国债72011-8-25 1 4.71 99.97 6.20199 7
;
run;
/*现金流分解 */
data float(keep=bdname c1-c38);
set bonds040927;
sdate='27sep2004'd;
edate=Matdt;
yrdif=yrdif(sdate, edate, '30/360');
dif=yrdif-int(yrdif);
if Freq=1 then if dif=0 then do;
y=yrdif;
a=coupond;
end;
else do;
y=int(yrdif)+1;
a=coupond;
end;
if Freq=2 then if dif=0.5 then do;
y=yrdif*2;
a=coupond/2;
end;
else if dif>0.5 then do;
y=int(yrdif)*2+2;
a=coupond/2;
end;

else do;
y=int(yrdif)*2+1;
a=coupond/2;
end;
array c{38};
do i=1 to y;
if i<y then c=a;
else c=a+100;
end;
do j=y+1 to 38;
c[j]=0;
end;
run;
/*现金流对应的时刻 */
data time(keep=bdname t1-t38);
set bonds040927;
sdate='27sep2004'd;
edate=Matdt;
yrdif=yrdif(sdate, edate, '30/360');
dif=yrdif-int(yrdif);
if Freq=1 then if dif=0 then do;
y=yrdif;
a=1;
end;
else do;
y=int(yrdif)+1;
a=dif;
end;
if Freq=2 then if dif=0.5 then do;
y=yrdif*2;
a=0.5;
end;
else if dif>0.5 then do;
y=int(yrdif)*2+2;
a=dif-0.5;
end;
else do;
y=int(yrdif)*2+1;
a=dif;
end;
array t{38};
do i=1 to y;
t=a+(1/Freq)*(i-1);
end;
do j=y+1 to 38;
t[j]=1;
end;
run;
data float_time;
merge float time;
run;
data w1;
set bonds040927 end=end;
Dur1=1/(dur**0.5);/*权重设为久期的算术平方根的倒数*/
sumDur1+Dur1;
if end;
call symput('ddd',sumDur1);
data w1(keep=w1);
merge bonds040927 w1;
w1=(1/(dur**0.5)/&ddd);
run;
proc ga seed=5555 maxiter = 30;
function y(selected
  • );
    array x[6] /nosym;
    call ReadMember(selected,1,x);
    x1=x[1];
    x2=x[2];
    x3=x[3];
    x4=x[4];
    x5=x[5];
    x6=x[6];
    array sum1{38,22};
    array w1{22};
    array Cldirpr{22};
    array c{38};
    array t{38};
    sum1[i,j]=0;
    sum2=0;
    Cldirpr[1]=114.85;
    Cldirpr[2]=116.6;
    Cldirpr[3]=98.48;
    Cldirpr[4]=94.62;
    Cldirpr[5]=96.66;
    Cldirpr[6]=92.09;
    Cldirpr[7]=89.13;
    Cldirpr[8]=89.67;
    Cldirpr[9]=94.16;
    Cldirpr[10]=86;
    Cldirpr[11]=90.71;
    Cldirpr[12]=77.36;
    Cldirpr[13]=95.96;
    Cldirpr[14]=92.5;
    Cldirpr[15]=90.65;
    Cldirpr[16]=80.64;
    Cldirpr[17]=89.69;
    Cldirpr[18]=87.26;
    Cldirpr[19]=93.7;
    Cldirpr[20]=99.92;
    Cldirpr[21]=101.04;
    Cldirpr[22]=99.97;
    w1[1]=0.041971;
    w1[2]=0.06284;
    w1[3]=0.061298;
    w1[4]=0.048207;
    w1[5]=0.053486;
    w1[6]=0.029016;
    w1[7]=0.041167;
    w1[8]=0.038811;
    w1[9]=0.048087;
    w1[10]=0.03854;
    w1[11]=0.047836;
    w1[12]=0.031245;
    w1[13]=0.053271;
    w1[14]=0.044165;
    w1[15]=0.044041;
    w1[16]=0.027272;
    w1[17]=0.044041;
    w1[18]=0.036816;
    w1[19]=0.041431;
    w1[20]=0.048634;
    w1[21]=0.042047;
    w1[22]=0.041971;
    do i=1 to 38;
    do j=1 to 22;
    sum1[i,j]=sum1[i,j]+c*exp(-t*(x1+(x2+x3)*(1-exp(-t/x5))/(t/x5)-x3*exp(-t/x5)+x4*(1-exp(-t/x6))/(t/x6)-x4*exp(-t/x6)));
    sum2=sum2+(Cldirpr[j]-sum1[i,j])**2*w1[j];
    end;
    end;
    result=sum2;
    return(result);
    endsub;
    call SetEncoding('R2');
    array LowerBound[6] /nosym (0.086 -0.086 -0.109 0.042 9 2.2);
    array UpperBound[6] /nosym (0.094 -0.076 -0.098 0.054 12 4);
    call SetBounds(LowerBound, UpperBound);
    call SetObjFunc('y',0);
    call SetCrossProb(0.65);
    call SetCrossHeuristic();
    call SetMutProb(0.15);
    array delta[2] /nosym (0.2 0.2);
    call SetMutDelta(delta, 1);
    call SetSelTournament(2);
    call SetElite(2);
    call Initialize('DEFAULT',120);
    run;
    quit;
    扫码或添加微信号:坛友素质互助


    「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
    免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
    涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
    来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
    经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
    扫描下方二维码下载并注册APP
  • 本文关键词:

    本文论坛网址:https://bbs.pinggu.org/thread-566457-1-1.html

    人气文章

    1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
    2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
    3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。