turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

Find a Community

- Home
- /
- Analytics
- /
- Forecasting
- /
- Heckman's correction and GLM

Topic Options

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

02-19-2016 06:01 PM - edited 02-19-2016 06:03 PM

Hi,

I am trying to estimate a GLM within a 2 step Heckman's correction method. I have looked at the reference materials. The SAS documentation shows (http://support.sas.com/documentation/cdl/en/etsug/67525/HTML/default/viewer.htm#etsug_qlim_examples0... that the selection model and the response models are estimated together. It also shows some other model types you can specifiy in this framework, but I dont believe GLM can be modeled same way, with the seletion probability model.

So, my question - is applying two step would be a right approach ? That is estimating the selection probability mdoel, and then calculating inverse mills ration and then using it to the GLM model specification.

Thanks for any help you could provide.

Accepted Solutions

Solution

08-09-2017
03:10 PM

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

Posted in reply to cd2011

02-23-2016 03:57 PM

Hi,

First of all, I would like to state what I understand from your problem:

Your selection model consists of two models. You have a probit selection equation that defines your selection “rule” and a model that you are actually interested in estimating (the response model). In your case, the response model is a GLM, i.e., the response variable distribution is a member of the exponential family, which includes the normal, Poisson, binomial, exponential, and gamma distributions.

If your response model is linear, which is a special case of the GLM, then all you need to do is to use the HECKIT option of the PROC QLIM. The HECKIT option requests that the selection model be estimated by Heckman’s two-step estimation method as it is defined in his 1979 paper (for details http://support.sas.com/documentation/cdl/en/etsug/67525/HTML/default/viewer.htm#etsug_qlim_details17...) . Using the example that you pointed out this can be done with the SAS program as

/*-- Sample Selection --*/

proc qlim data=mroz heckit;

model inlf = nwifeinc educ exper expersq

age kidslt6 kidsge6 /discrete;

model lwage = educ exper expersq / select(inlf=1);

run;

If your response model is nonlinear, for example if you have a binary response model or exponential response model, then, most likely, applying this particular selection bias correction method by estimating the selection equation by probit and then plugging the estimated inverse Mills ratio into the second-stage estimation method using only the selected sample will NOT be valid. In this case, you need to figure out the nature of the bias based on the particular assumptions of your model and apply the two-step method manually.

However, testing the null hypothesis of no selection bias when you have a binary response model can be done easily. For this, use SECONDSTAGE=ML suboption of the HECKIT option and use the t value on the coefficient on the _y.LAMBDA parameter where y is the dependent variable in your response model. Below is an example

proc qlim data=mroz heckit(secondstage=ML);

model inlf = nwifeinc educ exper expersq

age kidslt6 kidsge6 /discrete;

model lwage = educ exper expersq / discrete select(inlf=1);

run;

I hope this helps,

Best regards,

Gunce

All Replies

Solution

08-09-2017
03:10 PM

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

Posted in reply to cd2011

02-23-2016 03:57 PM

Hi,

First of all, I would like to state what I understand from your problem:

Your selection model consists of two models. You have a probit selection equation that defines your selection “rule” and a model that you are actually interested in estimating (the response model). In your case, the response model is a GLM, i.e., the response variable distribution is a member of the exponential family, which includes the normal, Poisson, binomial, exponential, and gamma distributions.

If your response model is linear, which is a special case of the GLM, then all you need to do is to use the HECKIT option of the PROC QLIM. The HECKIT option requests that the selection model be estimated by Heckman’s two-step estimation method as it is defined in his 1979 paper (for details http://support.sas.com/documentation/cdl/en/etsug/67525/HTML/default/viewer.htm#etsug_qlim_details17...) . Using the example that you pointed out this can be done with the SAS program as

/*-- Sample Selection --*/

proc qlim data=mroz heckit;

model inlf = nwifeinc educ exper expersq

age kidslt6 kidsge6 /discrete;

model lwage = educ exper expersq / select(inlf=1);

run;

If your response model is nonlinear, for example if you have a binary response model or exponential response model, then, most likely, applying this particular selection bias correction method by estimating the selection equation by probit and then plugging the estimated inverse Mills ratio into the second-stage estimation method using only the selected sample will NOT be valid. In this case, you need to figure out the nature of the bias based on the particular assumptions of your model and apply the two-step method manually.

However, testing the null hypothesis of no selection bias when you have a binary response model can be done easily. For this, use SECONDSTAGE=ML suboption of the HECKIT option and use the t value on the coefficient on the _y.LAMBDA parameter where y is the dependent variable in your response model. Below is an example

proc qlim data=mroz heckit(secondstage=ML);

model inlf = nwifeinc educ exper expersq

age kidslt6 kidsge6 /discrete;

model lwage = educ exper expersq / discrete select(inlf=1);

run;

I hope this helps,

Best regards,

Gunce