如何找到每年的回归线?

时间:2014-03-24 16:38:32

标签: sas

我有一个数据集:

"Country" "Year" "GDP.per.capita" "Infant.Mortality.Rate"
"Argentina" 1950 6252.85859891315 68
"Australia" 1950 10031.1213832996 25.1
"Austria" 1950 5733.09811393918 66
"Belgium" 1950 7990.46583983014 53
"Benin" 1950 1104.46653022144 204.8
"Burkina Faso" 1950 515.707854373329 178.7
"Canada" 1950 10581.265520182 41.2
"Chile" 1950 3713.9960324847 147.7
"Colombia" 1950 2087.94941987793 124
"Denmark" 1950 8996.05428012913 29.1
"Finland" 1950 5845.6263157204 44
"France" 1950 7104.00732497357 47.6
"Ghana" 1950 943.100536353646 150.1
"Greece" 1950 3040.41319387776 35

我写了一个脚本来从互联网上传这些数据。我想做一个回归: log(Infant_Mortality_Rate)=每年的国家日志(GDP_per_capita)。

FILENAME RegProj URL "http://www.math.tau.ac.il/~liadshek/Long.txt" ;
DATA book;
length country $20;
INFILE RegProj firstobs=2 dlm=" " LRECL=131072 dsd truncover;
INPUT Country$ Year GDP_per_capita Infant_Mortality_Rate;
RUN;

PROC reg ;
MODEL log(Infant_Mortality_Rate) = country log(GDP_per_capita);
output out = reg1;
run;

我的问题是:我如何为每年做这件事并将估算保存在另一张表中。 在一个简短的代码? (完整数据集中有62年)。

1 个答案:

答案 0 :(得分:3)

PROC REG有一个BY语句,大多数SAS程序也是如此。这样你就可以在一组中每年进行一次回归。

FILENAME RegProj URL "http://www.math.tau.ac.il/~liadshek/Long.txt" ;
DATA book;
length country $20;
INFILE RegProj firstobs=2 dlm=" " LRECL=131072 dsd truncover;
INPUT Country$ Year GDP_per_capita Infant_Mortality_Rate;
log_IMR = log(infant_mortality_rate);
log_gdp = log(GDP_per_capita);
RUN;

PROC reg data=book;
by year;
MODEL log_IMR = log_gdp;
output out = reg1;
run;

这为您提供了一个数据集,但是对于大多数用途,您可以在那里工作得很好,具体取决于您之后所做的事情。至少你可以编写一个宏来设置这62个数据集,但在大多数情况下,一个62年的数据集更好,使用BY处理进行任何进一步的分析。