[SAS] 4. 중회귀

김민건·2024년 5월 17일

SAS

목록 보기
5/7
post-thumbnail

4.1 예제 2.1의 최대산소흡입량 문제에서 설명변수로 키(X1)외에 몸무게(X2)를 추가로 고려한다. 회귀모형B0+B1X1+B2X2 +E이 적절하다고 가정한다. 자료를 삼차원 산점도로 그리고, 추정식이 Yhat = -4.410+0.049X1-0.019X2 일 때 이것의 삼차원 반응표면도 그리시오.

title 'Regression with two X variables';
data max2;
 input y x1 x2;
 lines;
 1.54 132.0 29.1
 1.74 135.5 29.7
 1.32 127.7 28.4
 1.50 131.1 28.8
 1.46 130.0 25.9
 1.35 127.6 27.6
 1.53 129.9 29.0
 1.71 138.1 33.6
 1.27 126.6 27.7
 1.50 131.8 30.8
run;
title '3-DIMENSIONAL SCATTER PLOT';
proc g3d data=max2;
  scatter x1*x2=y / grid
  					caxis=black;
run;

이제 적절하다고 판단한 회귀모형을 통해 x1, x2, y값들을 plane에
저장 하고 '표면도'을 추가로 그리는 코드

data plane;
 do x1=125 to 140 by 1;
  do x2=25 to 35 by 1;
   y=-4.410 + 0.049*x1 - 0.019*x2;
   output;
  end;
 end;
run;
title '3-DIMENSIONAL PLANE SURFACE';
proc g3d data=plane;
 plot x1*x2=y / grid
 				caxis=black;
 run;

4.6 아래의 표 4.3은 가공 자료로서 두 개의 설명변수 X1, X2와 반응변수 Y에 대한 것이다. X2에 대한 Y의 산점도 그리고 X2의 총회귀계수와 편회귀계수를 해석하시오.

 title 'TOTAL AND PARTIAL COEFFICIENTS';
 proc iml;
 y={2, 3, 2, 7, 6, 8, 10, 7, 8, 12, 11, 14};
 x={1 0 2,
    1 2 6,
    1 2 7,
    1 2 5,
    1 4 9,
    1 4 8,
    1 4 7,
    1 6 10,
    1 6 11,
    1 6 9,
    1 8 15,
    1 8 13};


title 'Total and Partial Coefficients';
data ex4_6;
input  y x1 x2;
cards;
   2   0   2
   3   2   6
   2   2   7
   7   2   5
   6   4   9
   8   4   8
  10  4   7
   7  6  10
   8  6  11
 12  6   9
 11  8 15
 14  8 13
;
symbol v=dot i=rl;
proc gplot data=ex4_6;
plot y*x2 /vaxis= 0 to 20 haxis=0 to 16;
run;
proc plot data=ex4_6;
plot y*x2 = x1;
run;

4.9

title 'Computation of Partial Coefficient using Residuals';
proc iml;
 y={ 1.54,1.74,1.32,1.50,1.46,1.35,1.53,1.71,1.27,1.50 };
 x={  1 132.0 29.1,
        1 135.5 29.7,
        1 127.7 28.4,
        1 131.1 28.8,
        1 130.0 25.9,
        1 127.6 27.6,
        1 129.9 29.0,
        1 138.1 33.6,
        1 126.6 27.7,
        1 131.8 30.8 };
n = nrow(x);
x1 = x[,{2}];
x2 = x[,{1,3}];
b1 = inv(x2`*x2)*x2`*x1;

x1hat = x2b1;
d = x1 - x1hat;
one = j(n,1,1);
d1 = one||d;
b = inv(d1`
d1)d1`y;

print b;
quit;

0개의 댓글