Forecasting using SAS Forecast Server, SAS/ETS, and more

How to prepare data for a proc panel pooled regression

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 75
Accepted Solution

How to prepare data for a proc panel pooled regression

Hi all,

 

I am trying to run a pooled regression for a sample. here is the code that I have right now:

 

 

data have; 
input fundid time flow flow_lag return;
datalines;
10001 1 10 . .01
10001 2 12 10 -.03
10001 3 -10 12 .04
10002 1 61 . .03
10002 2 36 61 .04
10002 3 10 36 0.01
;
run;
proc panel data = have;
id fundid time;
model flow = return flow_lag / pooled;
run;

 

Of course, I have lots of funds and lots of time periods. But I am just showing 2 funds and 3 time periods to understand better how the proc panel works.

 

 

When I run the above regression, I get the error:

There is only one cross section or time series observation. Computations will be terminated.

I get this message even when I run on the whole sample, which I know has lots of cross section and time series. As far as I understand, I have both multiple cross sections (two fundids) and multiple time series (three time ids).  So I think there should be something about pooled regression that I do not get at all.

 

Here are my two questions

 

  1. How should I arrange my data for the proc panel so that I do not face the above error?
  2. Is my time id correct? or should it be necessarily a variable with time informat?

If there is any reference that can help me, I would appreciate it if you mention it as well.

 

thanks a lot,


Accepted Solutions
Solution
‎10-22-2016 02:30 PM
SAS Employee
Posts: 27

Re: How to prepare data for a proc panel pooled regression

Posted in reply to Shayan2012

The error message you observed in PROC PANEL is typically due to one of the following two problems:

 

1)  at least one of the cross sections in your input data has only one time series observation, or

2)  at least one time series ID value is represented one (or fewer) times in the input data set.

 

In other words, in order to run your model using PROC PANEL for your current data structure, you need to make sure that every cross section has at least 2 nonmissing observations, and each time ID value appears in at least 2 cross sections.  Keep in mind that if any of the regressors in the MODEL statement has a missing for a given observation, then that observation is omitted from the estimation of the model. 

 

Because your current model includes a lagged dependent regressor, your variable FLOW_LAG is set to missing for TIME=1 for all observations in the example data you provided.  Because of this, there are no nonmissing observations for TIME=1.  In fact, when I run your code in the most current SAS/ETS 14.1 (9.4M3) release, PROC PANEL returns the following, more descriptive error:

 

ERROR: Each observation for time point time=1 has a missing value for at least one variable in

MODEL statement Model 1.

 

 

If I make the following modifications to your code, then PROC PANEL runs without error:

 

data need;

set have(where=(time > 1));

run;

 

proc panel data = need;

id fundid time;

model flow = return flow_lag / pooled;

run;

 

To answer your specific questions:

 

1. How should I arrange my data for the proc panel so that I do not face the above error?

Your data arrangement is fine, but the data must meet the criteria outlined above.

 

2. Is my time id correct? or should it be necessarily a variable with time informat?

You can use your Time ID variable as currently specified or use a SAS date or datetime variable, as long as your data meets the criteria outlined above.

 

I hope this helps!

View solution in original post


All Replies
Solution
‎10-22-2016 02:30 PM
SAS Employee
Posts: 27

Re: How to prepare data for a proc panel pooled regression

Posted in reply to Shayan2012

The error message you observed in PROC PANEL is typically due to one of the following two problems:

 

1)  at least one of the cross sections in your input data has only one time series observation, or

2)  at least one time series ID value is represented one (or fewer) times in the input data set.

 

In other words, in order to run your model using PROC PANEL for your current data structure, you need to make sure that every cross section has at least 2 nonmissing observations, and each time ID value appears in at least 2 cross sections.  Keep in mind that if any of the regressors in the MODEL statement has a missing for a given observation, then that observation is omitted from the estimation of the model. 

 

Because your current model includes a lagged dependent regressor, your variable FLOW_LAG is set to missing for TIME=1 for all observations in the example data you provided.  Because of this, there are no nonmissing observations for TIME=1.  In fact, when I run your code in the most current SAS/ETS 14.1 (9.4M3) release, PROC PANEL returns the following, more descriptive error:

 

ERROR: Each observation for time point time=1 has a missing value for at least one variable in

MODEL statement Model 1.

 

 

If I make the following modifications to your code, then PROC PANEL runs without error:

 

data need;

set have(where=(time > 1));

run;

 

proc panel data = need;

id fundid time;

model flow = return flow_lag / pooled;

run;

 

To answer your specific questions:

 

1. How should I arrange my data for the proc panel so that I do not face the above error?

Your data arrangement is fine, but the data must meet the criteria outlined above.

 

2. Is my time id correct? or should it be necessarily a variable with time informat?

You can use your Time ID variable as currently specified or use a SAS date or datetime variable, as long as your data meets the criteria outlined above.

 

I hope this helps!

Frequent Contributor
Posts: 75

Re: How to prepare data for a proc panel pooled regression

Thanks a lot, DW_SAS.

 

 

That was  very helpful and solved my issue.

 

 

 

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 632 views
  • 1 like
  • 2 in conversation