2014-03-24 26 views
2

我有一個數據集:如何找到每年的迴歸線?

"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年)。

回答

3

與大多數SAS程序一樣,PROC REG也有BY語句。這將允許您每年在一組中執行一次迴歸。

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處理進行進一步分析。

+0

它不起作用。 –

+1

也許更有用的評論可能解釋你的特定問題是什麼。 – Joe

+0

需要注意的是,在使用'by'語句之前,您需要通過變量(年)對數據進行排序。你的數據看起來像是按照這種方式排序的,但如果不是,你需要這樣做。 – Joe