BookmarkSubscribeRSS Feed
gyouinngm
Fluorite | Level 6

안녕하세요, 

 

proc panel procedure 시행하는 데, "there are missing values in the TS variable"가 뜨는데요, 아마 제 생각에 '.'값이 있어서 그런거 같은데요, 어떻게 해결할 수 있을까요?

 

검색해보니 '(where=(TS~=.))'를 추가하라고 해서 추가하니까 변수 TS가 없다고 나옵니다.

 

어떻게 해야할지 막막한데요, 혹시 데이터셋을 null 값이 나오지 않도록 새로 만들든지, '.'을 '0'으로 대체하면 될까요?

 

감사합니다

6 REPLIES 6
Chulgyu1
SAS Employee

ID 문장에 있는 Time-series ID 변수에 missing 값이 있다는 것이고,

정상 수행하려면 missing인 것을 빼고 하거나 아니면 missing을 채운 후에 수행해야 합니다.

 

참고로 질문 올리실때는 사용하신 코드를 올려주시면 더 정확한 도움을 받으실 수 있습니다.

gyouinngm
Fluorite | Level 6

답변 감사합니다. 아래는 제가 사용한 코드와 로드입니다.

혹시 그럼 데이터셋에 있는 '.'을 '0'으로 바꾸면 분석이 가능할까요?

 

 

분석코드
proc panel data=RESULT.HEADSET3 ;
class c3 age_group c7_1 EDU c24_1 c2_1;
model INCOUNT=c3 age_group c7_1 EDU c24_1 c2_1 / ranone;
id pidwon year ;
run;

<Log>
ERROR: There are missing values in the TS variable.
NOTE: 오류가 발생하여 SAS 시스템은 현재 스텝의 실행을 중지합니다.
NOTE: 프로시저 PANEL 실행(총 프로세스 시간):
실행 시간 22.11 초
cpu 시간 19.45 초

 

 

 

AmeeKang
Quartz | Level 8

안녕하세요

 

data Miss_Values;
input ID$ var1 var2 var3;
datalines;
1 . 3 4 
2 2 0 .
3 . . 3
4 . 8 .
5 5 . .
;


proc stdize data=Miss_Values out=StdizeMethod_Var reponly missing=0;
run;

스크린샷 2021-02-02 오후 6.28.32.png

 

위의 예시 코드와 같이 porc stdize의 reponly missing = 0 옵션을 사용하시면 될 것 같습니다.

reponly missing = 0 옵션은 char 변수에서는 반응을 하지 않고 numeric변수에서만 반응합니다. 

gyouinngm
Fluorite | Level 6

답변 감사합니다.

 

주신 내용대로 PROC STDIZE 사용해서 '.'을 '0'으로 만든뒤 PROC PANEL 돌렸더니 "ERROR: The data set WORK._CLSS_ is not sorted in ascending sequence with respect to the time series ID. The current time period has YEAR=2010 and the previous time period has YEAR=2010 in cross section PIDWON=1000101."

혹시 아래와 같이 PIDWOND이랑 YEAR가 한번만 나오는 게 아니라 같은 연도가 계속 이어져서 에러가 나는게 아닐까 생각했습니다ㅠㅠ. (엑셀참조) 애초에 뭔가 PANEL 을 돌릴 데이터셋이 덜만들어졌나 하는 생각이 들었습니다. 패널분석이 첨이다 보니 너무 어렵네요.

 

PIDWON    YEAR

      1            2010

      1            2010

     1             2010

     1            2010

 

Chulgyu1
SAS Employee

Missing을 채우는 것에는 약간의 고민이 필요할 것 같습니다.

TS 변수에 Missing이 있다는 것은 Year 변수에 Missing이 있다는 것인데, 패널 데이터의 기본이 Cross section을 시간에 따라 반복 측정한 것인데, 아마도 시간이 Missing이라는 것은 잘못된 데이터가 아닐까 하는 생각이 드네요.

 

패널 데이터는 위에 언급한 대로 Cross section과 TS 변수의 조합에 대해서 Unique하게 데이터가 만들어져 있어야 합니다. 지금의 데이터는 동일한 시간(Year)에 여러 번 측정된 것 같은데, 데이터 전처리 작업을 하던가 아니면 TS 변수를 년월로 변경을 해서 분석을 해야할 것 같네요.

 

그리고 마지막으로 PROC SORT를 이용하여 데이터를 PIDWON YEAR에 대해서 정렬할 후에 PROC PANEL을 실행해야합니다.

 

proc sort data=data-set-name; by pidwon year; run;

gyouinngm
Fluorite | Level 6

답변 감사합니다.

 

말씀하신 대로 데이터 전처리 작업을 더 해야 하지 않을까 생각됩니다. 아직 panel procedure를 돌릴 정도로 데이타작업이 되지 않은거 같습니다.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

Discussion stats
  • 6 replies
  • 3809 views
  • 4 likes
  • 3 in conversation