use fulldataindest, clear keep cusip6 personid firmid obs1_pereffcwpatsba obs1_firmeffcwpatsba for var obs1_*: egen mX=mean(X) for var obs1_*: egen sdX=sd(X) for var obs1_*: replace X=(X-mX)/sdX drop sdobs1_* mobs1_* preserve keep cusip6 firmid obs1_firmeffcwpatsba duplicates drop cusip6 firmid, force save firmeff_postanalysis, replace restore preserve keep personid obs1_pereffcwpatsba duplicates drop personid, force save pereff_postanalysis, replace restore use individualestimatesmovingclean.dta, replace cap drop _merge merge m:1 cusip firmid using firmeff_postanalysis drop if _merge==2 cap drop _merge merge m:1 personid using pereff_postanalysis drop if _merge==2 cap drop _merge preserve merge m:1 year cusip6 using cstat_1975_2015_s, keepusing(gp ni sale at xrd) drop if _merge==2 drop _merge merge m:1 cusip6 year using cstatq, keepusing(csho) drop if _merge==2 drop _merge bysort firmid: egen minfirmyr=min(year) bysort firmid: egen maxfirmyr=max(year) gen age=year-minfirmyr gen lage2 = log(1+age) bysort year: egen minni=min(ni) bysort year: egen mingp=min(gp) gen lsale=log(sale) gen lat=log(at) gen lni=log(ni-minni) gen lgp=log(gp-mingp) gen lrnd=log(1+xrd) gen lnips=log((ni-minni)/sale) gen lgpps=log((gp-mingp)/sale) gen lnipa=log((ni-minni)/at) gen lgppa=log((gp-mingp)/at) gen leps=log((ni-minni))/csho gen nips=ni/sale gen gpps=gp/sale gen rndint=log(xrd)-log(sale) gen nipa=ni/at gen gppa=gp/at gen eps=ni/csho sum ni gp lni lgp nips gpps nipa gppa lnips lgpps lnipa lgppa eps leps tobinq lemp lrnd rndint lage *sum fmean* firmeff* fmed* ftotal* f90pct* for var ni gp lni lgp nips gpps nipa gppa lnips lgpps lnipa lgppa eps leps tobinq lemp lrnd rndint lsale lat lage: bysort year: egen mX=mean(X) for var ni gp lni lgp nips gpps nipa gppa lnips lgpps lnipa lgppa eps leps tobinq lemp lrnd rndint lsale lat lage: bysort year: egen sdX=sd(X) for var ni gp lni lgp nips gpps nipa gppa lnips lgpps lnipa lgppa eps leps tobinq lemp lrnd rndint lsale lat lage: replace X=(X-mX)/sdX bysort cusip6 firmid year: egen avgobs1_pereffcwpatsba=mean(obs1_pereffcwpatsba) *for var firmeff* fmean_pereff*: bysort year: egen rX=rank(X) duplicates drop firmid year, force xtset firmid year for var obs1_* ni gp lni lgp nips gpps nipa gppa lnips lgpps lnipa lgppa eps leps tobinq lemp lrnd rndint lsale lat lage avgobs1_pereffcwpatsba: gen lag_X=L.X keep lag* cusip6 year ni gp lni lgp nips gpps nipa gppa lnips lgpps lnipa lgppa eps leps tobinq lemp lrnd rndint lsale lat avgobs1_pereffcwpatsba save lagpanel.dta, replace restore cap drop _merge merge m:1 year cusip6 using lagpanel, keepusing(lag* ni gp lni lgp nips gpps nipa gppa lnips lgpps lnipa lgppa eps leps tobinq lemp lrnd rndint lsale lat) *********************************************************************************************************** ******************** A Look at career dynamics of inventors *********************************************** *********************************************************************************************************** bysort cusip6 firmid year: egen avgobs1_pereffcwpatsba=mean(obs1_pereffcwpatsba) ***Generate some additional career data drop mincaryr maxcaryr careerlength maxtenyr mintenyr tenurelength bysort personid: egen mincaryr=min(year) bysort personid: egen maxcaryr=max(year) bysort personid firmid: egen minpersonfirmyr=min(year) *end of sample issues egen endsampleyr=max(year) gen endactive=maxcaryr==endsampleyr *Who is at >2 firms in the same year? tab multfirms gen freelancer=multfirms>0 *We exclude these guys drop if freelancer==1 *number the firms of an inventor in chrono order sort personid year minpersonfirmyr gen newperson=personid[_n]>personid[_n-1] gen newfirm=1 if newperson==0 & firmid[_n]!=firmid[_n-1] replace newfirm=0 if newperson==1 replace newfirm=0 if newfirm==. sort personid year newfirm minpersonfirmyr gen personfirmnumber = 1 if _n==1 replace personfirmnumber=personfirmnumber[_n-1]+newfirm[_n] if _n>1 bysort personid: egen minpersonfirmnumber=min(personfirmnumber) replace personfirmnumber=personfirmnumber-minpersonfirmnumber+1 tab newfirm tab newperson tab personfirmnumber bysort personid personfirmnumber: egen mintenyr=min(year) bysort personid personfirmnumber: egen maxtenyr=max(year) gen careerlength=maxcaryr-mincaryr gen experience=log(year-mincaryr+1) gen tenure=log(year-mintenyr+1) *who moves to other firm? sort personid personfirmnumber gen movefirm=1 if personid[_n]==personid[_n+1] & personfirmnumber[_n]