全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5504 7
2010-06-16
有下面的数据格式 (有很多的plot,这 只是给出个列子):
plotvisitn_liven_deadyearlive_offyr_interval
12602319845986
13601619906026
14601619956015
15600720026017
22312719833175
23307919883125
24299819933075
252921619982995
32312719833175
33307919883125
34299819933075
352921619982995

关于循环和回归结果导出的问题,已经列在下面的SAS程序中,相应的“*”处。
请大家帮忙啊~
非常感谢!

有下面的SAS程序:

proc import out=trees datafile='C:\Users\data1.xls'
        dbms=excel2000 replace;
        run;

data data2;
        set trees;
        if plot=1; * 选择plot=1的进行数据分析 (我的问题是:如何可以写一个循环,一下对我所有的plot进行下面的数据分析?)
        proc print data=data2;
run;

title 'GENERALIZED NONLINEAR MIXED MODEL, WITH YEAR';
proc nlmixed data=data2;                 
        parms a=0 b=0 s2=0.1;                                                         
        eta = a + b*year;                  
        p_ann_mort = exp(eta)/(1+exp(eta));                        
        p_ann_surv = 1-p_ann_mort;                                                
        p_surv = p_ann_surv**yr_interval;                                 
        p_mort = 1-p_surv;
        mean_mort = live_off*p_mort;
        ll=lgamma(1/alpha + n_dead) - lgamma(1 + n_dead) - lgamma(1/alpha)
                + n_dead*log(alpha*mean_mort)
                - (1/alpha + n_dead)*log(1 + alpha*mean_mort);        * log likelihood function for negative binomial regression ;
        model n_dead ~ general(ll);  * 这是一次运行的分析结果 (我的问题是:怎样可以把所有plot分析的结果放在一起,列出来?。我只需要结果里面的prameter部分的结果)
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-6-16 11:19:25
第一个问题,你用macro的do循环语句。
第二个问题,先用ods trace查看该过程步的所有输出名称,然后用ods output语句导出你想要的数据集。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-6-16 13:03:52
nkwilling 发表于 2010-6-16 11:19
第一个问题,你用macro的do循环语句。
第二个问题,先用ods trace查看该过程步的所有输出名称,然后用ods output语句导出你想要的数据集。
非常感谢!
能帮我写一下程序吗?就在上面的程序上修改就可以。
我平常不用SAS,用R语言,所以对SAS一点都不了解。
再次感谢~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-6-16 13:07:02
我最后期待的结果应该是这样:
plotParameterEstimateStandard ErrorDFt ValuePr > |t|AlphaLowerUpperGradient
1a-0.008512.7513141600.99750.05-5.40575.3886-229.141
1b-0.002080.0013841416-1.510.13240.05-0.00480.000631-459992
1s2-1.11E-12.1416..0.05..4469.395
1alpha0.9264.1416..0.05..1709.494
2a-0.0003311.7381211010.05-23.139323.138697.18042
2b-0.001820.005901211-0.310.75820.05-0.013450.009813193134.8
2s2-1.11E-12.211..0.05..285.4842
2alpha1.2957.211..0.05..203.1044
3a-0.0004523.960631010.05-48.868348.8674-1.15804
3b-0.002130.0120431-0.180.86060.05-0.026680.02242-2470.37
3s2-1.11E-12.31..0.05..65.61452
3alpha0.9467.31..0.05..39.73354
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-6-16 23:27:48
大家帮忙啊~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-6-17 13:55:37
%macro t;

%do i=1 %to plot_class;

data data2;
        set trees;
        if plot=1;
run;

title 'GENERALIZED NONLINEAR MIXED MODEL, WITH YEAR';

ods output test&i.=another SAS name;
proc nlmixed data=data2;                 
.....
run;

%end i;

%mend t;

%t;

其中的test&i.是由ods trace语句得到,如下:

ods trace;
proc nlmixed;.....;run;
因为我不知道你的数据集,所以无法测试.不过我想,上面已经说的很清楚了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群