SAS学习 day8

  • 模型诊断

  • 残差检验 y与y估计值的差异  要服从正态分布

学生化残差:标准差除以残差

1、如果是相对小的样本  该值应该在-2到+2之间

2、如果说相对大的样本 该值应该在-3到+3之间

  • 强影响点判断

没有建立模型的意义

四个统计量判断

  1. STUDENT residual :学生化残差  即残差除以标准差
  2. Cook‘s D:衡量第i个观测被删除后,回归系数估计的影响度
  3. RSTUDENT residual:不含该观测所拟合模型给出的学生化残差
  4. DFFITS:衡量第i个观测被删除后 对应预测值的标准化影响度
  • 共线性诊断

方差膨胀因子:

 Ri是第i个变量与其他变量之间的负相关系数的平方值

残差检验

proc reg data = reg.b_fitness;
PREDICT: model oxygen_consumption =
   runtime age run_pulse maximum_pulse;
plot r.*(p. runtime age run_pulse maximum_pulse);  r.表示残差 与预测值之间的关系  是否带状
plot student.*obs. / vref = 3 2 -2 -3    学生化残差与观测值之间的关系  带状
          haxis = 0 to 32 by 1;
plot nqq.*student.;  学生化残差的正态pp图
symbol v=dot;
run;

 

学生化残差在-2到2之间

 不是这种情况 要从数据处理开始 取log等等

 强影响点判断

proc reg data = reg.b_fitness;
PREDICT: model oxygen_consumption =
   runtime age run_pulse maximum_pulse
     / r influence;
id name;
output out= ck4outliers  设定输出数据集
    rstudent = rstud dffits = dfits cookd = cooksd;  三个变量的关键字
run;
强影响点阀值判断

%let numparms = 5;  预测的变量个数加1
%let numobs = 31;  观测的个数
%let idvars = name;


data influential;
set ck4outliers;


cutdifts = 2*(sqrt(&numparms/&numobs));
cutcookd = 4/&numobs;


rstud_i = (abs(rstud)>3);   rstud 绝对值大于3
dfits_i = (abs(dfits)>cutdifts);
cookd_i = (cooksd>cutcookd);
sum_i = rstud_i + dfits_i + cookd_i;  满足三个任意一个就可以
if sum_i >0;
run;

 

 结果得到的强影响点 需要剔除

共线性诊断

proc reg data = reg.b_fitness;
FULLMODL: model oxygen_consumption
 = performance runtime age weight run_pulse rest_pulse maximum_pulse
    /vif collin collinoint;   vif成对出现 vif>3即认为有共线性
run;

 

 

有共线性去掉变量

 

posted @ 2019-02-20 12:54  碎纸屑  阅读(415)  评论(0编辑  收藏  举报