I have a problem that deals with human capital. Given Wit=KitRt where human capital Kit is unobservable and Rt is the market clearing price for human capital that applies to all workers, which is also unobservable. However, given functional forms for human capital accumulation I can estimate the following equation,

Wit+1/Rt+1 = a1 * Wit/Rt + a2 * (Wit/Rt)^2 + a3 * (Wit*Hit)/Rt + a4 * Hit + a5 * Hit^2 + vt +eit

==> Wit+1 = a1 * Wit * Rt+1/Rt + a2 * (Wit)^2 * Rt+1/Rt^2 + a3 * (Wit*Hit) * Rt+1/Rt + a4 * Hit* Rt+1 + a5 * Hit^2 * Rt+1+ vt +eit

estimate: Wit+1 = d1 * Wit + d2 * (Wit)^2 + d3 * (Wit*Hit) + d4 * Hit + d5 * Hit^2 + eit

This is a paper from Shaw (1989), "Life-Cycle Labor Supply and Human Capital". However, I can't quite figure out how she estimated the rental rates jointly with the model and there is very little guidance in the paper.

My thought process was that given a nonlinear model I use GMM with IV. Using time dummy variables as IV I state that Dt = 1 if year = t and Dt = 0 if year != t then I estimate the entire panel data set, then change the target year for the dummy variable and repeat the estimation process. I do this T number of times for all years.

Then for example, the change in the coefficient of hours Hit will be equal to a4 * Rt+1. Assuming a1-a5 are constant then a4*Rt+2/a4*Rt+1 = Rt+2/Rt+1. Normalizing one of the rental rates R=1 then I can observe the rental rate over time.

My estimates are not quite the same as Shaw's. So where am I going wrong? Is it correct to use time dummies in this case to estimate the time specific shock?

My stata code looks like this
gen time_dummy = 0

save mydata2, replace

***************************Estimation************* **************
xtset id year

forvalues i = 1967/1980{

replace time_dummy = 1 if year == `i'
replace time_dummy = 0 if year != `i'

gmm(rwage_f - ({xb: rwage rwage2 rEarnings hrs hrs2}+{b0})), instruments(rwage rwage2 rEarnings hrs age time_dummy) wmatrix(robust)
replace d1=_b[rwage] if year == `i'
replace d2=_b[rwage2] if year == `i'
replace d3=_b[rEarnings] if year == `i'
replace d4=_b[hrs] if year == `i'
replace d5=_b[hrs2] if year == `i'
replace constant = _b[/b0] if year == `i'
}

replace rental_rate = 1 if year == 1967
sort id year
replace rental_rate = (alpha4/alpha4[_n-1])*rental_rate[_n-1] if id==id[_n-1] & year >1967
[IMG]file:////Users/tallonhowie/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image001.png[/IMG]my stata code looks like,