1543 0

[原创博文] 运行FAMA 的程序看不明白 有谁能帮忙解说吗? 万谢 [推广有奖]

  • 4关注
  • 0粉丝

大专生

96%

还不是VIP/贵宾

-

威望
0
论坛币
480 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1306 点
帖子
50
精华
0
在线时间
36 小时
注册时间
2011-8-4
最后登录
2012-3-24

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
%let depvar=  &regvar lag1 lag2 lag3 lag4 lag5  ;

/************************************************************************************
Purpose: 0.  Fama-MacBeth regression and Newwey _West 检验  by SAS
**************************************************************************************/
%macro FMReg(y=  ,out=  );
** 2. drop irrelevant estimates;
proc sort data=FB; by _model_ date; run;
data FB2; set FB; drop  &y _TYPE_  _DEPVAR_  _RMSE_ _IN_  _P_  _EDF_;
rename _model_=model; run;
proc transpose data=FB2 out=FBny name=name prefix=coef;
by model date; run;
data FBny; set FBny; retain code;
by model date; code=code+1; if first.date then code=1;run;
proc sort data=FBny; by model code name;run;
** 3. Newey-West t-stat for the time-series average of coefficients;
%let lags=3;*lags for Newey-West t-stat;
proc model data=FBny;
by model code name;
parms a; exogenous coef1 ;
instruments / intonly;
coef1 =a;
fit coef1 / gmm kernel=(bart, %eval(&lags+1), 0);
ods output parameterestimates=param1  fitstatistics=fitresult
OutputStatistics=residual;
quit;
** 4. output into column table;
data param1; set param1;
tvalue=put(tvalue,7.4);
if probt<0.1 then p='*  ';
if probt<0.05 then p='** ';
if probt<0.01 then p='***';
T=compress('('||tvalue||')'); PARAM=compress(put(estimate,7.5)||p);
run;
data param1a; set param1; keep model code name coef _name_;
_name_='PARAM'; coef=PARAM; run;
data param1b; set param1; keep model code name coef _name_;
_name_='T'; coef=T; run;
data param2; set param1a param1b;run;
proc sort data=param2; by  code _name_ model;run;
proc transpose data=param2 out=param3;
by code name _name_; id model; var coef; run;
data param3;
set param3;
if _name_='T' then do;
code=. ;name=.;
end;run;
** 5. find the range of periods and obs used;
proc sort data=fb out=fb3; by _model_; run;
data fb3;
set fb3;
keep _model_ date num; num = _edf_+_p_;
rename _model_=model;
run;
proc sql;
create table num(where=(model='MODEL1')) as
select  model, min(date) as start, max(date) as end, count(date) as range,
sum(num) as obs
from fb3
group by model;
quit;

proc transpose data=num out=num; by model; var start -- obs; run;

data num;
set num;
rename _name_=name;
MODEL1=put(col1, 7.0);
drop model col1;
run;
data &out;
set param3 num;
run;
%mend FMReg;

/*******************************************************************************/
proc sort data=m4_reg;
by date;
run;
proc reg data =  m4_reg outest=FB noprint;
by date;
  model ret= &depvar /adjrsq;
run;
%FMReg(y=ret ,out=Reg_table10);

proc reg data =  m4_reg outest=FB noprint;
by date;
  model oct= &depvar /adjrsq;
run;
%FMReg(y=oct ,out=Reg_table11);


/*A fixed effects regression using the absorption technique can be done as follows: */
proc sort data=m4_reg;
by stkcd date;
proc glm data =  m4_reg;
absorb stkcd;
model oct= &depvar/ solution noint; run;
quit;
/*Clustered standard errors may be estimated as follows: */
proc genmod data=m4_reg;
class stkcd;
model new_r= &depvar;
repeated subject=stkcd / type=ind; run;
quit;
二维码

扫码加我 拉你入群

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

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

关键词:FAMA FAM Ama 不明白 coefficients 程序

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 21:38