楼主: tianjianqiang
5221 12

gauss怎么导出回归残差? [推广有奖]

11
xuelida 在职认证  发表于 2010-12-7 14:47:29
读者可以看看code后面的解释,其实都是ols的基本理论公式

12
xuelida 在职认证  发表于 2010-12-7 14:49:27
{b,se,seh,e}=ols(y,x); @调用ols过程@
proc(4)=ols(y,x); @ proc(4)代表着retp中返回的变量有4个@
local n,k,const,xx,b,e,tss,ess,rss,s2,se,r2,ar2,xname,i,xname1,hname,ff,ffn,pr,u,seh;
@local 后面的变量为局部变量,不能与全局变量相同@
    n=rows(x); k=cols(x);
    const=ones(n,1);
xx=const~x;
    b=invpd(xx'xx)*(xx'y);
    e=y-xx*b; @回归残差@
    u=e.*xx;
    tss=(y-meanc(y))'(y-meanc(y)); @总平方和@
    rss=e'e; @残差平方和@
    ess=(xx*b-meanc(xx*b))'(xx*b-meanc(xx*b)); @也可以写为ess = tss-rss;@
    s2=e'e/(n-k-1); @回归误差的方差,注意有常数项@
    se=sqrt(diag(invpd(xx'xx)*s2)); @同方差误差@
    seh=sqrt(diag(invpd(xx'xx)*(u'u)*invpd(xx'xx))); @异方差误差@
    r2=1-rss/tss; @可决系数@
    ar2=1-s2/(tss/(n-1)); @调整的可决系数@
     "R_squared " r2;
    "R_squared (adjusted) " ar2;
    "residual sum of squares (rss) " rss;
retp(b,se,seh,e);
endp;

这是一个proc调用的ols过程,和上面直接计算的结果一样的,只是编程格式不相同
已有 1 人评分论坛币 学术水平 收起 理由
xuehe + 100 + 4 根据规定进行奖励

总评分: 论坛币 + 100  学术水平 + 4   查看全部评分

13
zhangtao 发表于 2011-1-11 18:39:12
非常感谢xuelida老师!

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-29 00:10