저는 1993 년부터 2014 년까지 매일 시장 수익률에 대한 주식 수익률 (수천 개 회사의)에 대한 선형 회귀를 실행해야하는 연구 프로젝트를 진행하고 있습니다.
데이터는 (이것은 더미 데이터입니다) :
| Ticker | Time | Stock Return | Market Return |
|----------|----------|--------------|---------------|
| Facebook | 12:00:01 | 1% | 1.5% |
| Facebook | 12:00:02 | 1.5% | 2% |
| ... | | | |
| Apple | 12:00:01 | -0.5% | 1.5% |
| Apple | 12:00:03 | -0.3% | 2% |
데이터 볼륨이 상당히 큽니다. 매일 약 1.5G의 데이터가 있습니다. 회귀 분석 및 실행에 필요한 21 년의 데이터가 있습니다.
회귀 공식은 다음과 유사합니다.
Stock_Return = beta * Market_Return + alpha
여기서 베타와 알파는 우리가 추정하는 두 개의 계수입니다. 계수는 회사마다 그리고 매일 다릅니다.
이제 내 질문은 각 회사와 매일의 베타 및 알파를 데이터 구조로 출력하는 방법입니다.
SAS 회귀 문서를 읽고 있었지만 출력이 데이터 구조가 아닌 텍스트 인 것 같습니다.
문서의 코드 :
proc reg;
model y=x;
run;
문서의 출력 :
매일 모든 회사의 모든 베타를 읽을 수있는 방법은 없습니다. 수만 개가 있습니다.
따라서 베타를 데이터 구조로 출력하고 추출하는 방법이 있는지 궁금합니다.
OOP 언어 (python 및 java)에 대한 배경 지식이 있습니다. 따라서 SAS는 때때로 정말 혼란 스러울 수 있습니다 ...
SAS는 여러면에서 객체 지향 프로그래밍 언어와 매우 유사하지만 물론 기능 언어와 4GL의 기능도 있습니다.
이 경우 출력 전달 시스템 개체 ( ODS
)라는 개체가 있습니다. 인쇄 된 출력을 생성하는 SAS 9의 모든 절차는 출력 전달 시스템을 통해 생성되며 일반적으로 ODS OUTPUT
객체 이름을 알고있는 경우 해당 출력을 얻을 수 있습니다 .
ODS TRACE
특정 proc에 의해 생성 된 출력의 이름을 보는 데 사용할 수 있습니다 .
data stocks;
set sashelp.stocks;
run;
ods trace on;
proc reg data=stocks;
by stock;
model close=open;
run;
ods trace off;
로그의 이름을 기록하십시오. 그런 다음 출력 측면에서 원하는 것이 무엇이든 proc을 ODS OUTPUT
명령문으로 래핑하십시오 .
따라서 모수 추정치를 원하면 다음과 같이 가져올 수 있습니다.
ods output ParameterEstimates=stockParams;
proc reg data=stocks;
by stock;
model close=open;
run;
ods output close;
여러 데이터 세트를 출력하려는 경우 원하는만큼 ODS OUTPUT 문을 가질 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다