로그인   |  회원가입  |  사이트맵  |  Contact Us
  아이디 저장하기
 
홈 > SAS Tech & Tip > SAS 자주 묻는 질문
Regression에서 predicted value 값 도출의 오류 2017.05.29
박주형 192 0
http://www.mysas.co.kr/SAS_tiptech/c_tiptech.asp?b_no=7306&gotopage=1&con=subject&keyword=&cmd=content&bd_no=07&gubun=%ED%86%B5%EA%B3%84(%EB%B6%84%EC%84%9D)%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%B8

안녕하세요. 

회귀분석의 predicted value값이 이상해서, 문의드리려고 글을 작성하였습니다. 

우선 

도구변수를 사용하여 regression을 사용하였습니다. 

 

1st stage :  Y1 = X1 + X2 + X3 + Z1 + Z2

2nd stage :  Y2 = Y1 + X1 + X2 + X3 

 

[over-identifying model]

endogenous variagle : Y1

instrumental variable: Z1, Z2

 

이와같은 분석을 하고자할때 2가지 방법이 있는 것으로 알고 있습니다. 

첫째, Proc syslin 코드를 사용한다. 

둘째, 직접 1st stage를 돌려 predicted value를 구해 2nd stage를 분석한다.

 

그래서 첫째와 둘째 방법을 이용해서 모두 predicted value값을 구해보니, 그 값이 일치하지 않아 

이런 문의글을 작성하게 되었습니다. 

 

제가사용한 코드는 아래와 같습니다. 

 

첫째, Proc syslin 코드 사용

 

proc syslin data=data 2sls out=data_out first

endogenous Y1;

instruments X1 X2 X3 Z1 Z2​;

model Y2=Y1 ​X1 X2 X3 ​   ⇒ 이 결과를 result A라 하겠습니다. 

output predicted=hat1_Y1;   ⇒ 이때의 predicted value를 hat1이라 하겠습니다. 

run; 


​ 이렇게 proc syslin을 돌려 predicted value값을 뽑아 2nd regression에 직접 돌려줘보았습니다. 


proc reg data=data_out;

model Y2=hat1_Y1 X1 X2 X3;  ⇒ 이 결과를 result B라 하겠습니다. 

run;

 

둘재,  직접 1st stage를 돌려 predicted value를 구해 2nd stage를 분석하는 방법


        1st stage

proc reg data=data;

   model   Y1 = X1  X2  X3  Z1  Z2​

   output out=data_out2     

   p=hat2_Y1; ⇒ 이때의 predicted value를 hat2라 하겠습니다. 

run;


2nd stage

proc reg data=data_ou2;

   model Y2 = hat2_Y1 X1 X2 X3; ⇒ 이 결과를 result C라 하겠습니다. ​​

run;

 

 

여기서 궁금한 점은, 

Q1. hat1, hat2의 값이 다른 점. 

Q2. result A, result B, result C 가 각각 결과가 다르게 도출되는 점 입니다. 

 

hat1, hat2가 다르다면 당연히 result A, result C가 다른것도 이해가능하지만 

그렇다면 왜 result A, result B가 또 달라지는걸까요.?

코드에 문제가 있는 것인지

제가 잘못생각하고 있었던 부분인 것인지 알고싶습니다. 

 

읽어주셔서 감사합니다. 

이문제에 대해 아시는분은 댓글이나 답글 부탁드립니다. 

안녕히계세요 ♥

 

 
 
    
 
 하나 이상의 시작 할당이 복원되지 않았습니다 note가 나옵니다.
 transpose 관련