cap log close set more off clear* set maxvar 120000 log using innovationfullsample.log, replace *************************PART ONE: IDENTIFY THE FIXED EFFECTS OF INVENTORS AND FIRMS IN VARIOUS WAYS********************************************** *************************************Estimation Baseline model all data points***************************************** ****Use the already manipulated file use Innovation_Workfile, clear *Get rid of extras to speed things up: keep drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp cusip6 year logcwpatsba* cwpatsba* firmid personid cat lasspats_* logotherasscwpatsba /// nauthors naics* nobs ownershipchange usestabid stateestabid linkedin rnd_3avg ppe_3avg sale_3avg opinc_chg_3avg emp asspats_stock age tab year, gen (dumyear) ***************************************************************************************************************************** *******************BELOW THIS LINE YOU CAN SHUT OUT THE FULL DATA ROUTINES TO RUN THE BY-INDUSTRY PART SOLO****************** ***************************************************************************************************************************** cap erase table_3.txt cap erase table_3.xml cap erase table_A4.txt cap erase table_A4.xml *Data cutting bysort personid cusip6 year: egen minrow=min(_n) gen firstpat=(minrow==_n) keep if firstpat==1 drop minrow ****File for residual analysis preserve keep personid firmid year save fixedeffectsresiduals.dta, replace restore ****experience sum year local y=r(max)-r(min)+1 bysort personid: egen minyr=min(year) gen lexperience=log(1+year-minyr) gen experience=1+year-minyr *********************Column 5: no covariates, 1+ observations preserve **All observations to get the grouping variable felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', grouponly /// i(personid) j(firmid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp ********Make table on movers and firms****** sort personid year firmid gen movefirm=1 if firmid[_n-1]!=firmid[_n] & personid[_n-1]==personid[_n] replace movefirm=0 if movefirm==. bysort personid: egen numfirms=total(movefirm) bysort firmid: egen nmoversperfirm=total(mover) sort personid year gen newperson=1 if personid[_n-1]!=personid[_n] replace newperson=0 if newperson==. sort firmid year gen newfirm=1 if firmid[_n-1]!=firmid[_n] replace newfirm=0 if newfirm==. tab mover if newperson==1 tab numfirms if newperson==1 tab nmoversperfirm if newfirm==1 ****Run AKM felsdvreg logcwpatsba dumyear2-dumyear`y', takegroup robust /// i(personid) j(firmid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest sum logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lemp lasspats_stock lage lexperience nauthors gen rnd_3avg_intS=rnd_3avg/sale_3avg gen ppe_3avg_intS=ppe_3avg/sale_3avg sum cwpatsba drnd rnd_3avg_intS ppe_3avg_intS sale_3avg opinc_chg_3avg emp asspats_stock age experience outreg2 using table_3, excel append drop(dumyear*) /// addtext(Sample, Full, Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) quietly{ ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } correlate logcwpatsba rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate logcwpatsba pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate logcwpatsba firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate logcwpatsba yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) gen xbr2cwpatsba=0 } ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum perr2cwpatsba firmr2cwpatsba yearr2cwpatsba totalr2cwpatsba sum varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba *****Store these estimates in files at inventor/firm level collapse firmid obsperperson nauthors mover firmeffcwpatsba pereffcwpatsba naics* *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba, by(personid cusip6) for var firmeffcwpatsba pereffcwpatsba *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba: rename X nocovX duplicates drop personid firmid, force merge 1:1 personid firmid using fulldataindest.dta, nogen update save fulldataindest.dta, replace gen sizequart=0 gen industry=0 gen movers=0 gen controls=0 gen nomerger=0 gen obsincluded=1 gen establishmentstate=0 gen establishmentcat=0 gen outputmeasure=1 gen selfcites=0 gen coworker=0 cap drop perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba rename nocovperr2cwpatsba perr2cwpatsba rename nocovfirmr2cwpatsba firmr2cwpatsba rename nocovyearr2cwpatsba yearr2cwpatsba rename nocovxbr2cwpatsba xbr2cwpatsba rename nocovtotalr2cwpatsba totalr2cwpatsba rename nocovvarlogcwpatsba varlogcwpatsba rename nocovpervarcwpatsba pervarcwpatsba rename nocovfirmvarcwpatsba firmvarcwpatsba rename nocovyearvarcwpatsba yearvarcwpatsba rename nocovresvarcwpatsba resvarcwpatsba rename nocovfirmpercovcwpatsba firmpercovcwpatsba rename nocovperyearcovcwpatsba peryearcovcwpatsba rename nocovfirmyearcovcwpatsba firmyearcovcwpatsba collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites sizequart coworker) save fulldatarsquareds.dta, replace restore ************************************ Columns 1,2,3: Include covariates with increasing number of observations foreach x in 1 6 10{ di `x' preserve keep if nobs>=`x' sum year local y=r(max)-r(min)+1 local z=`x'-1 **All observations to get the grouping variable felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', /// i(personid) j(firmid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) grouponly *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp ********Make table on movers and firms****** sort personid year firmid gen movefirm=1 if firmid[_n-1]!=firmid[_n] & personid[_n-1]==personid[_n] replace movefirm=0 if movefirm==. bysort personid: egen numfirms=total(movefirm) bysort firmid: egen nmoversperfirm=total(mover) sort personid year gen newperson=1 if personid[_n-1]!=personid[_n] replace newperson=0 if newperson==. sort firmid year gen newfirm=1 if firmid[_n-1]!=firmid[_n] replace newfirm=0 if newfirm==. tab mover if newperson==1 tab numfirms if newperson==1 tab nmoversperfirm if newfirm==1 ***show summary stats sum logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lemp lasspats_stock lage lexperience nauthors gen rnd_3avg_intS=rnd_3avg/sale_3avg gen ppe_3avg_intS=ppe_3avg/sale_3avg sum cwpatsba drnd rnd_3avg_intS ppe_3avg_intS sale_3avg opinc_chg_3avg emp asspats_stock age experience egen matchid = group(personid firmid) felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', takegroup robust /// i(personid) j(firmid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest outreg2 using table_3, excel append drop(dumyear*) /// addtext(Sample, Obs>`z', Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ cap replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } replace xbcwpatsba=xbcwpatsba-yeareffcwpatsba correlate logcwpatsba rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate logcwpatsba pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate logcwpatsba firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate logcwpatsba yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate logcwpatsba xbcwpatsba, covariance gen float xbcovcwpatsba = r(cov_12) gen float xbvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) correlate firmeffcwpatsba xbcwpatsba, covariance gen float firmxbcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba xbcwpatsba, covariance gen float perxbcovcwpatsba = 2*r(cov_12) correlate yeareffcwpatsba xbcwpatsba, covariance gen float yearxbcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen xbr2cwpatsba=xbcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba sum varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba *****file for residual analysis for var rescwpatsba firmeffcwpatsba pereffcwpatsba perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba: rename X obs`x'_X keep firmid personid year obs* merge 1:1 personid firmid year using fixedeffectsresiduals.dta, nogen update save fixedeffectsresiduals.dta, replace *****Store these estimates in files at inventor/firm level collapse obs`x'_*, by(personid firmid) merge 1:1 personid firmid using fulldataindest.dta, nogen update save fulldataindest.dta, replace gen sizequart=0 gen industry=0 gen movers=0 gen controls=1 gen nomerger=0 gen obsincluded=`x' gen establishmentstate=0 gen establishmentcat=0 gen outputmeasure=1 gen selfcites=0 gen coworker=1 cap drop perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba rename obs`x'_perr2cwpatsba perr2cwpatsba rename obs`x'_firmr2cwpatsba firmr2cwpatsba rename obs`x'_yearr2cwpatsba yearr2cwpatsba rename obs`x'_xbr2cwpatsba xbr2cwpatsba rename obs`x'_totalr2cwpatsba totalr2cwpatsba rename obs`x'_varlogcwpatsba varlogcwpatsba rename obs`x'_pervarcwpatsba pervarcwpatsba rename obs`x'_firmvarcwpatsba firmvarcwpatsba rename obs`x'_yearvarcwpatsba yearvarcwpatsba rename obs`x'_xbvarcwpatsba xbvarcwpatsba rename obs`x'_resvarcwpatsba resvarcwpatsba rename obs`x'_firmpercovcwpatsba firmpercovcwpatsba rename obs`x'_peryearcovcwpatsba peryearcovcwpatsba rename obs`x'_firmyearcovcwpatsba firmyearcovcwpatsba rename obs`x'_perxbcovcwpatsba perxbcovcwpatsba rename obs`x'_firmxbcovcwpatsba firmxbcovcwpatsba rename obs`x'_yearxbcovcwpatsba yearxbcovcwpatsba collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites sizequart coworker) append using fulldatarsquareds.dta save fulldatarsquareds.dta, replace restore } ****************************Column 4: only movers********************* preserve sum year local y=r(max)-r(min)+1 **All observations to get the grouping variable felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', /// i(personid) j(firmid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) grouponly *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp bysort personid: egen maxfirmid1=max(firmid) bysort personid: egen minfirmid1=min(firmid) replace mover=0 if maxfirmid1==minfirmid1 keep if mover==1 felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', robust /// i(personid) j(firmid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest sum logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lemp lasspats_stock lage lexperience nauthors outreg2 using table_3, excel append drop(dumyear*) /// addtext(Sample, Movers, Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) quietly{ ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ cap replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } replace xbcwpatsba=xbcwpatsba-yeareffcwpatsba correlate logcwpatsba rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate logcwpatsba pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate logcwpatsba firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate logcwpatsba yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate logcwpatsba xbcwpatsba, covariance gen float xbcovcwpatsba = r(cov_12) gen float xbvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) correlate firmeffcwpatsba xbcwpatsba, covariance gen float firmxbcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba xbcwpatsba, covariance gen float perxbcovcwpatsba = 2*r(cov_12) correlate yeareffcwpatsba xbcwpatsba, covariance gen float yearxbcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen xbr2cwpatsba=xbcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) } ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba sum varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba *****Store these estimates in files at inventor/firm level collapse firmid firmeffcwpatsba pereffcwpatsba *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(personid cusip6) for var firmeffcwpatsba pereffcwpatsba *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba: rename X moverX merge 1:1 personid firmid using fulldataindest.dta, nogen update save fulldataindest.dta, replace gen sizequart=0 gen industry=0 gen movers=1 gen controls=1 gen nomerger=0 gen obsincluded=1 gen establishmentstate=0 gen establishmentcat=0 gen outputmeasure=1 gen selfcites=0 gen coworker=0 cap drop perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba rename moverperr2cwpatsba perr2cwpatsba rename moverfirmr2cwpatsba firmr2cwpatsba rename moveryearr2cwpatsba yearr2cwpatsba rename moverxbr2cwpatsba xbr2cwpatsba rename movertotalr2cwpatsba totalr2cwpatsba rename movervarlogcwpatsba varlogcwpatsba rename moverpervarcwpatsba pervarcwpatsba rename moverfirmvarcwpatsba firmvarcwpatsba rename moveryearvarcwpatsba yearvarcwpatsba rename moverxbvarcwpatsba xbvarcwpatsba rename moverresvarcwpatsba resvarcwpatsba rename moverfirmpercovcwpatsba firmpercovcwpatsba rename moverperyearcovcwpatsba peryearcovcwpatsba rename moverfirmyearcovcwpatsba firmyearcovcwpatsba rename moverperxbcovcwpatsba perxbcovcwpatsba rename moverfirmxbcovcwpatsba firmxbcovcwpatsba rename moveryearxbcovcwpatsba yearxbcovcwpatsba collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites sizequart coworker) append using fulldatarsquareds.dta save fulldatarsquareds.dta, replace restore ***********Column 6: Use co-worker productivity as control***************************************** preserve sum year local y=r(max)-r(min)+1 **All observations to get the grouping variable felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience logotherasscwpatsba dumyear2-dumyear`y', /// i(personid) j(firmid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) grouponly *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience logotherasscwpatsba dumyear2-dumyear`y', takegroup robust /// i(personid) j(firmid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest sum logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lemp lasspats_stock lage lexperience nauthors outreg2 using table_3, excel append drop(dumyear*) /// addtext(Sample, Cowork, Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) quietly{ ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ cap replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } replace xbcwpatsba=xbcwpatsba-yeareffcwpatsba correlate logcwpatsba rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate logcwpatsba pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate logcwpatsba firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate logcwpatsba yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate logcwpatsba xbcwpatsba, covariance gen float xbcovcwpatsba = r(cov_12) gen float xbvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) correlate firmeffcwpatsba xbcwpatsba, covariance gen float firmxbcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba xbcwpatsba, covariance gen float perxbcovcwpatsba = 2*r(cov_12) correlate yeareffcwpatsba xbcwpatsba, covariance gen float yearxbcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen xbr2cwpatsba=xbcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) } ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba sum varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba *****Store these estimates in files at inventor/firm level collapse firmid firmeffcwpatsba pereffcwpatsba *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(personid cusip6) for var firmeffcwpatsba pereffcwpatsba *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba: rename X coworkX merge 1:1 personid firmid using fulldataindest.dta, nogen update save fulldataindest.dta, replace gen sizequart=0 gen industry=0 gen movers=1 gen controls=1 gen nomerger=0 gen obsincluded=1 gen establishmentstate=0 gen establishmentcat=0 gen outputmeasure=1 gen selfcites=0 gen coworker=1 cap drop perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba rename coworkperr2cwpatsba perr2cwpatsba rename coworkfirmr2cwpatsba firmr2cwpatsba rename coworkyearr2cwpatsba yearr2cwpatsba rename coworkxbr2cwpatsba xbr2cwpatsba rename coworktotalr2cwpatsba totalr2cwpatsba rename coworkvarlogcwpatsba varlogcwpatsba rename coworkpervarcwpatsba pervarcwpatsba rename coworkfirmvarcwpatsba firmvarcwpatsba rename coworkyearvarcwpatsba yearvarcwpatsba rename coworkxbvarcwpatsba xbvarcwpatsba rename coworkresvarcwpatsba resvarcwpatsba rename coworkfirmpercovcwpatsba firmpercovcwpatsba rename coworkperyearcovcwpatsba peryearcovcwpatsba rename coworkfirmyearcovcwpatsba firmyearcovcwpatsba rename coworkperxbcovcwpatsba perxbcovcwpatsba rename coworkfirmxbcovcwpatsba firmxbcovcwpatsba rename coworkyearxbcovcwpatsba yearxbcovcwpatsba collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites sizequart coworker) append using fulldatarsquareds.dta save fulldatarsquareds.dta, replace restore ********Column 7: no mergers***************************************** preserve drop if ownershipchange==1 sum year local y=r(max)-r(min)+1 **All observations to get the grouping variable felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', /// i(personid) j(firmid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) grouponly *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', takegroup robust /// i(personid) j(firmid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest outreg2 using table_3, excel append drop(dumyear*) /// addtext(Sample, No Merger, Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) quietly{ ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ cap replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } replace xbcwpatsba=xbcwpatsba-yeareffcwpatsba correlate logcwpatsba rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate logcwpatsba pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate logcwpatsba firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate logcwpatsba yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate logcwpatsba xbcwpatsba, covariance gen float xbcovcwpatsba = r(cov_12) gen float xbvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) correlate firmeffcwpatsba xbcwpatsba, covariance gen float firmxbcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba xbcwpatsba, covariance gen float perxbcovcwpatsba = 2*r(cov_12) correlate yeareffcwpatsba xbcwpatsba, covariance gen float yearxbcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen xbr2cwpatsba=xbcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) } ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba sum varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba *****Store these estimates in files at inventor/firm level collapse firmid firmeffcwpatsba pereffcwpatsba *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(personid cusip6) for var firmeffcwpatsba pereffcwpatsba *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba: rename X nomerge_X merge 1:1 personid firmid using fulldataindest.dta, nogen update save fulldataindest.dta, replace gen sizequart=0 gen industry=0 gen movers=0 gen controls=1 gen nomerger=1 gen obsincluded=1 gen establishmentstate=0 gen establishmentcat=0 gen outputmeasure=1 gen selfcites=0 gen coworker=0 cap drop perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba rename nomerge_perr2cwpatsba perr2cwpatsba rename nomerge_firmr2cwpatsba firmr2cwpatsba rename nomerge_yearr2cwpatsba yearr2cwpatsba rename nomerge_xbr2cwpatsba xbr2cwpatsba rename nomerge_totalr2cwpatsba totalr2cwpatsba rename nomerge_varlogcwpatsba varlogcwpatsba rename nomerge_pervarcwpatsba pervarcwpatsba rename nomerge_firmvarcwpatsba firmvarcwpatsba rename nomerge_yearvarcwpatsba yearvarcwpatsba rename nomerge_xbvarcwpatsba xbvarcwpatsba rename nomerge_resvarcwpatsba resvarcwpatsba rename nomerge_firmpercovcwpatsba firmpercovcwpatsba rename nomerge_peryearcovcwpatsba peryearcovcwpatsba rename nomerge_firmyearcovcwpatsba firmyearcovcwpatsba rename nomerge_perxbcovcwpatsba perxbcovcwpatsba rename nomerge_firmxbcovcwpatsba firmxbcovcwpatsba rename nomerge_yearxbcovcwpatsba yearxbcovcwpatsba collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites coworker sizequart) append using fulldatarsquareds.dta save fulldatarsquareds.dta, replace restore **************Column 10: include self citations********************* preserve sum year local y=r(max)-r(min)+1 **All observations to get the grouping variable felsdvreg logcwpatsba_self drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', /// i(personid) j(firmid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) grouponly *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp felsdvreg logcwpatsba_self drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', takegroup robust /// i(personid) j(firmid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest outreg2 using table_3, excel append drop(dumyear*) /// addtext(Sample, Self, Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) quietly{ ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ cap replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } replace xbcwpatsba=xbcwpatsba-yeareffcwpatsba correlate logcwpatsba_self rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate logcwpatsba_self pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate logcwpatsba_self firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate logcwpatsba_self yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate logcwpatsba_self xbcwpatsba, covariance gen float xbcovcwpatsba = r(cov_12) gen float xbvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) correlate firmeffcwpatsba xbcwpatsba, covariance gen float firmxbcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba xbcwpatsba, covariance gen float perxbcovcwpatsba = 2*r(cov_12) correlate yeareffcwpatsba xbcwpatsba, covariance gen float yearxbcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen xbr2cwpatsba=xbcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) } ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba sum varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba *****Store these estimates in files at inventor/firm level collapse firmid firmeffcwpatsba pereffcwpatsba *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(personid cusip6) for var firmeffcwpatsba pereffcwpatsba *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba: rename X self_X merge 1:1 personid firmid using fulldataindest.dta, nogen update save fulldataindest.dta, replace gen sizequart=0 gen industry=0 gen movers=0 gen controls=1 gen nomerger=0 gen obsincluded=1 gen establishmentcat=0 gen establishmentstate=0 gen outputmeasure=3 gen selfcites=1 gen coworker=0 cap drop perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba rename self_perr2cwpatsba perr2cwpatsba rename self_firmr2cwpatsba firmr2cwpatsba rename self_yearr2cwpatsba yearr2cwpatsba rename self_xbr2cwpatsba xbr2cwpatsba rename self_totalr2cwpatsba totalr2cwpatsba rename self_varlogcwpatsba varlogcwpatsba rename self_pervarcwpatsba pervarcwpatsba rename self_firmvarcwpatsba firmvarcwpatsba rename self_yearvarcwpatsba yearvarcwpatsba rename self_xbvarcwpatsba xbvarcwpatsba rename self_resvarcwpatsba resvarcwpatsba rename self_firmpercovcwpatsba firmpercovcwpatsba rename self_peryearcovcwpatsba peryearcovcwpatsba rename self_firmyearcovcwpatsba firmyearcovcwpatsba rename self_perxbcovcwpatsba perxbcovcwpatsba rename self_firmxbcovcwpatsba firmxbcovcwpatsba rename self_yearxbcovcwpatsba yearxbcovcwpatsba collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites coworker sizequart) append using fulldatarsquareds.dta save fulldatarsquareds.dta, replace restore *****************************Robutness check table A4: breakthrough and zero citation inventions********************* ****Use the already manipulated file use Innovation_Workfile, clear *Get rid of extras to speed things up: keep drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp cusip6 year perassbreak logperasszerocites firmid personid cat lasspats_* /// nauthors naics* nobs ownershipchange usestabid stateestabid tab year, gen (dumyear) *Data cutting bysort personid cusip6 year: egen minrow=min(_n) gen firstpat=(minrow==_n) keep if firstpat==1 drop minrow ****experience sum year local y=r(max)-r(min)+1 bysort personid: egen minyr=min(year) gen lexperience=log(1+year-minyr) preserve **All observations to get the grouping variable felsdvreg perassbreak drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', /// i(personid) j(firmid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) grouponly *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp felsdvreg perassbreak drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', takegroup robust /// i(personid) j(firmid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest outreg2 using table_A4, excel append drop(dumyear*) /// addtext(Sample, Breaks, Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) quietly{ ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ cap replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } replace xbcwpatsba=xbcwpatsba-yeareffcwpatsba correlate perassbreak rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate perassbreak pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate perassbreak firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate perassbreak yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate perassbreak xbcwpatsba, covariance gen float xbcovcwpatsba = r(cov_12) gen float xbvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) correlate firmeffcwpatsba xbcwpatsba, covariance gen float firmxbcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba xbcwpatsba, covariance gen float perxbcovcwpatsba = 2*r(cov_12) correlate yeareffcwpatsba xbcwpatsba, covariance gen float yearxbcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen xbr2cwpatsba=xbcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) } ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba sum varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba *****Store these estimates in files at inventor/firm level gen sizequart=0 gen industry=0 gen movers=0 gen controls=1 gen nomerger=0 gen obsincluded=1 gen establishmentstate=0 gen establishmentcat=0 gen outputmeasure=4 gen selfcites=0 gen coworker=0 collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites sizequart coworker) append using fulldatarsquareds.dta save fulldatarsquareds.dta, replace restore ************ZERO CITES PATENTS preserve **All observations to get the grouping variable felsdvreg logperasszerocites drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', /// i(personid) j(firmid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) grouponly *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp felsdvreg logperasszerocites drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', takegroup robust /// i(personid) j(firmid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest outreg2 using table_A4, excel append drop(dumyear*) /// addtext(Sample, Breaks, Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) quietly{ ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ cap replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } replace xbcwpatsba=xbcwpatsba-yeareffcwpatsba correlate logperasszerocites rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate logperasszerocites pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate logperasszerocites firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate logperasszerocites yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate logperasszerocites xbcwpatsba, covariance gen float xbcovcwpatsba = r(cov_12) gen float xbvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) correlate firmeffcwpatsba xbcwpatsba, covariance gen float firmxbcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba xbcwpatsba, covariance gen float perxbcovcwpatsba = 2*r(cov_12) correlate yeareffcwpatsba xbcwpatsba, covariance gen float yearxbcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen xbr2cwpatsba=xbcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) } ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba sum varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba *****Store these estimates in files at inventor/firm level gen sizequart=0 gen industry=0 gen movers=0 gen controls=1 gen nomerger=0 gen obsincluded=1 gen establishmentstate=0 gen establishmentcat=0 gen outputmeasure=5 gen selfcites=0 gen coworker=0 collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites coworker sizequart) append using fulldatarsquareds.dta save fulldatarsquareds.dta, replace restore *****************************Robutness check 5: establishment level********************* *****Column 8 table 3: All countries and states ****Use the already manipulated file use Innovation_Workfile, clear *Get rid of extras to speed things up: keep drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp cusip6 year logcwpatsba logcwpatsbacat firmid personid cat lasspats_stock_* /// nauthors naics* nobs ownershipchange usestabid stateestabid catfirmid ****experience sum year local y=r(max)-r(min)+1 bysort personid: egen minyr=min(year) gen lexperience=log(1+year-minyr) tab year, gen (dumyear) preserve *Data cutting bysort personid stateestabid year: egen minrow=min(_n) gen firstpat=(minrow==_n) keep if firstpat==1 drop minrow sum year local y=r(max)-r(min)+1 **All observations to get the grouping variable felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock_stateest lexperience dumyear2-dumyear`y', /// i(personid) j(stateestabid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) grouponly *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock_stateest lexperience dumyear2-dumyear`y', takegroup robust /// i(personid) j(stateestabid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest outreg2 using table_3, excel append drop(dumyear*) /// addtext(Sample, Est. State, Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) quietly{ ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ cap replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } replace xbcwpatsba=xbcwpatsba-yeareffcwpatsba correlate logcwpatsba rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate logcwpatsba pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate logcwpatsba firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate logcwpatsba yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate logcwpatsba xbcwpatsba, covariance gen float xbcovcwpatsba = r(cov_12) gen float xbvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) correlate firmeffcwpatsba xbcwpatsba, covariance gen float firmxbcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba xbcwpatsba, covariance gen float perxbcovcwpatsba = 2*r(cov_12) correlate yeareffcwpatsba xbcwpatsba, covariance gen float yearxbcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen xbr2cwpatsba=xbcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) } ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba sum varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba *****Store these estimates in files at inventor/firm level gen sizequart=0 gen industry=0 gen movers=0 gen controls=1 gen nomerger=0 gen obsincluded=1 gen establishmentstate=1 gen establishmentcat=0 gen outputmeasure=1 gen selfcites=0 gen coworker=0 collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites coworker sizequart) append using fulldatarsquareds.dta save fulldatarsquareds.dta, replace restore *******Column 9 table 3: Establishment by patent class preserve *Data cutting bysort personid catfirmid year: egen minrow=min(_n) gen firstpat=(minrow==_n) keep if firstpat==1 drop minrow sum year local y=r(max)-r(min)+1 **All observations to get the grouping variable felsdvreg logcwpatsbacat drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock_catfirmid lexperience dumyear2-dumyear`y', /// i(personid) j(catfirmid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) grouponly *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp felsdvreg logcwpatsbacat drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock_catfirmid lexperience dumyear2-dumyear`y', takegroup robust /// i(personid) j(catfirmid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest outreg2 using table_3, excel append drop(dumyear*) /// addtext(Sample, Est. US, Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) quietly{ ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ cap replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } replace xbcwpatsba=xbcwpatsba-yeareffcwpatsba correlate logcwpatsbacat rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate logcwpatsbacat pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate logcwpatsbacat firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate logcwpatsbacat yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate logcwpatsbacat xbcwpatsba, covariance gen float xbcovcwpatsba = r(cov_12) gen float xbvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) correlate firmeffcwpatsba xbcwpatsba, covariance gen float firmxbcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba xbcwpatsba, covariance gen float perxbcovcwpatsba = 2*r(cov_12) correlate yeareffcwpatsba xbcwpatsba, covariance gen float yearxbcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen xbr2cwpatsba=xbcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) } ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba gen sizequart=0 gen industry=0 gen movers=0 gen controls=1 gen nomerger=0 gen obsincluded=1 gen establishmentstate=0 gen establishmentcat=1 gen outputmeasure=1 gen selfcites=0 gen coworker=0 collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites coworker sizequart) append using fulldatarsquareds.dta save fulldatarsquareds.dta, replace restore cap log close ***************************************************************************************************************************** ********************************ACTIVATE BELOW THIS LINE TO RUN THE BY-INDUSTRY PART SOLO************************************ ***************************************************************************************************************************** cap erase table_A3.txt cap erase table_A3.xml log using innovationbysector.log, replace ****Use the already manipulated file use Innovation_Workfile, clear *Get rid of extras to speed things up: keep drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp cusip6 year logcwpatsba* cwpatsba* firmid personid cat lasspats_* /// nauthors naics* nobs ownershipchange usestabid stateestabid tab year, gen (dumyear) forvalues s=1/6{ preserve bysort personid: egen totpercwpatsbacat=total(cwpatsbacat`s') keep if totpercwpatsbacat>0 bysort firmid: egen totfirmcwpatsbacat=total(cwpatsbacat`s') keep if totfirmcwpatsbacat>0 cap drop firstpat lexperience minyr bysort personid cusip6 year: egen minrow=min(_n) gen firstpat=1 if minrow==_n replace firstpat=0 if firstpat==. keep if firstpat==1 drop minrow bysort personid: egen minyr=min(year) gen lexperience=log(1+year-minyr) sum year local y=r(max)-r(min)+1 *************************************Estimation Baseline model all data points***************************************** **All observations to get the grouping variable felsdvreg logcwpatsbacat`s' drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', /// i(personid) j(firmid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) grouponly *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp ********Make table on movers and firms****** sort personid year firmid gen movefirm=1 if firmid[_n-1]!=firmid[_n] & personid[_n-1]==personid[_n] replace movefirm=0 if movefirm==. bysort personid: egen numfirms=total(movefirm) replace numfirms=numfirms+1 bysort firmid: egen nmoversperfirm=total(mover) sort personid year gen newperson=1 if personid[_n-1]!=personid[_n] replace newperson=0 if newperson==. sort firmid year gen newfirm=1 if firmid[_n-1]!=firmid[_n] replace newfirm=0 if newfirm==. tab mover if newperson==1 tab numfirms if newperson==1 tab nmoversperfirm if newfirm==1 felsdvreg logcwpatsbacat`s' drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', takegroup robust /// i(personid) j(firmid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest outreg2 using table_A3, excel append drop(dumyear*) ctitle(Cat `s') /// addtext(Sample, Cat `s', Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) quietly{ ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ cap replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } replace xbcwpatsba=xbcwpatsba-yeareffcwpatsba correlate logcwpatsbacat`s' rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate logcwpatsbacat`s' pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate logcwpatsbacat`s' firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate logcwpatsbacat`s' yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate logcwpatsbacat`s' xbcwpatsba, covariance gen float xbcovcwpatsba = r(cov_12) gen float xbvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) correlate firmeffcwpatsba xbcwpatsba, covariance gen float firmxbcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba xbcwpatsba, covariance gen float perxbcovcwpatsba = 2*r(cov_12) correlate yeareffcwpatsba xbcwpatsba, covariance gen float yearxbcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen xbr2cwpatsba=xbcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) } ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba sum varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba *****Store these estimates in files at inventor/firm level collapse firmid firmeffcwpatsba pereffcwpatsba *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(personid cusip6) for var firmeffcwpatsba pereffcwpatsba: rename X ind`s'X merge 1:1 personid firmid using fulldataindest.dta, nogen update save fulldataindest.dta, replace gen sizequart=0 gen industry=`s' gen movers=0 gen controls=1 gen nomerger=0 gen obsincluded=1 gen establishmentstate=0 gen establishmentcat=0 gen outputmeasure=1 gen selfcites=0 gen coworker=0 collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites sizequart coworker) append using fulldatarsquareds.dta save fulldatarsquareds.dta, replace restore } cap log close ***************************************************************************************************************************** ********************************ACTIVATE BELOW THIS LINE TO RUN THE BY-SIZE QUARTILE PART SOLO******************************* ***************************************************************************************************************************** log using innovationbysize.log, replace ****Use the already manipulated file use Innovation_Workfile, clear *Get rid of extras to speed things up: keep drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp cusip6 year logcwpatsba* cwpatsba* firmid personid cat lasspats_* /// nauthors naics* nobs ownershipchange usestabid stateestabid tab year, gen (dumyear) cap drop firstpat lexperience minyr bysort personid cusip6 year: egen minrow=min(_n) gen firstpat=minrow==_n keep if firstpat==1 drop minrow ***Make quartiles in firm size bysort firmid year: egen ninventors = count(personid) bysort firmid year: egen minrow=min(_n) gen firstfirmyearpat=minrow==_n drop minrow bysort firmid: egen minrow=min(_n) gen firstfirmpat=minrow==_n bysort firmid: egen mninventors=mean(ninventors) if firstfirmyearpat==1 bysort firmid: egen mmninventors=mean(mninventors) tabstat mmninventors if firstfirmpat==1, s(min p5 p10 p25 p50 p75 p90 p95 max) hist mmninventors if firstfirmpat==1 *************************************Estimation Baseline model for small-medium-large-xlarge firms***************************************** **********************************************************SMALL FIRMS********************************************************************** preserve keep if mmninventors<=50 bysort personid: egen minyr=min(year) gen lexperience=log(1+year-minyr) sum year local y=r(max)-r(min)+1 **All observations to get the grouping variable felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', /// i(personid) j(firmid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) grouponly *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp ********Make table on movers and firms****** sort personid year firmid gen movefirm=1 if firmid[_n-1]!=firmid[_n] & personid[_n-1]==personid[_n] replace movefirm=0 if movefirm==. bysort personid: egen numfirms=total(movefirm) replace numfirms=numfirms+1 bysort firmid: egen nmoversperfirm=total(mover) sort personid year gen newperson=1 if personid[_n-1]!=personid[_n] replace newperson=0 if newperson==. sort firmid year gen newfirm=1 if firmid[_n-1]!=firmid[_n] replace newfirm=0 if newfirm==. tab mover if newperson==1 tab numfirms if newperson==1 tab nmoversperfirm if newfirm==1 felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', takegroup robust /// i(personid) j(firmid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest outreg2 using table_A3, excel append drop(dumyear*) ctitle(Quart `s') /// addtext(Sample, <50, Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) quietly{ ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ cap replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } replace xbcwpatsba=xbcwpatsba-yeareffcwpatsba correlate logcwpatsba rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate logcwpatsba pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate logcwpatsba firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate logcwpatsba yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate logcwpatsba xbcwpatsba, covariance gen float xbcovcwpatsba = r(cov_12) gen float xbvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) correlate firmeffcwpatsba xbcwpatsba, covariance gen float firmxbcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba xbcwpatsba, covariance gen float perxbcovcwpatsba = 2*r(cov_12) correlate yeareffcwpatsba xbcwpatsba, covariance gen float yearxbcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen xbr2cwpatsba=xbcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) } ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba sum varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba *****Store these estimates in files at inventor/firm level collapse firmid firmeffcwpatsba pereffcwpatsba *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(personid cusip6) for var firmeffcwpatsba pereffcwpatsba: rename X small_X merge 1:1 personid firmid using fulldataindest.dta, nogen update save fulldataindest.dta, replace gen sizequart=50 gen industry=0 gen movers=0 gen controls=1 gen nomerger=0 gen obsincluded=1 gen establishmentstate=0 gen establishmentcat=0 gen outputmeasure=1 gen selfcites=0 gen coworker=0 collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites sizequart coworker) append using fulldatarsquareds.dta save fulldatarsquareds.dta, replace restore **********************************************************MEDIUM FIRMS******************************************************************** preserve keep if mmninventors<=250 keep if mmninventors>50 bysort personid: egen minyr=min(year) gen lexperience=log(1+year-minyr) sum year local y=r(max)-r(min)+1 **All observations to get the grouping variable felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', /// i(personid) j(firmid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) grouponly *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp ********Make table on movers and firms****** sort personid year firmid gen movefirm=1 if firmid[_n-1]!=firmid[_n] & personid[_n-1]==personid[_n] replace movefirm=0 if movefirm==. bysort personid: egen numfirms=total(movefirm) replace numfirms=numfirms+1 bysort firmid: egen nmoversperfirm=total(mover) sort personid year gen newperson=1 if personid[_n-1]!=personid[_n] replace newperson=0 if newperson==. sort firmid year gen newfirm=1 if firmid[_n-1]!=firmid[_n] replace newfirm=0 if newfirm==. tab mover if newperson==1 tab numfirms if newperson==1 tab nmoversperfirm if newfirm==1 felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', takegroup robust /// i(personid) j(firmid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest outreg2 using table_A3, excel append drop(dumyear*) ctitle(Quart `s') /// addtext(Sample, 50-250, Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) quietly{ ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ cap replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } replace xbcwpatsba=xbcwpatsba-yeareffcwpatsba correlate logcwpatsba rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate logcwpatsba pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate logcwpatsba firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate logcwpatsba yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate logcwpatsba xbcwpatsba, covariance gen float xbcovcwpatsba = r(cov_12) gen float xbvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) correlate firmeffcwpatsba xbcwpatsba, covariance gen float firmxbcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba xbcwpatsba, covariance gen float perxbcovcwpatsba = 2*r(cov_12) correlate yeareffcwpatsba xbcwpatsba, covariance gen float yearxbcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen xbr2cwpatsba=xbcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) } ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba sum varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba *****Store these estimates in files at inventor/firm level collapse firmid firmeffcwpatsba pereffcwpatsba *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(personid cusip6) for var firmeffcwpatsba pereffcwpatsba: rename X med_X merge 1:1 personid firmid using fulldataindest.dta, nogen update save fulldataindest.dta, replace gen sizequart=250 gen industry=0 gen movers=0 gen controls=1 gen nomerger=0 gen obsincluded=1 gen establishmentstate=0 gen establishmentcat=0 gen outputmeasure=1 gen selfcites=0 gen coworker=0 collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites sizequart coworker) append using fulldatarsquareds.dta save fulldatarsquareds.dta, replace restore **********************************************************LARGE FIRMS******************************************************************** preserve keep if mmninventors<=1000 keep if mmninventors>250 bysort personid: egen minyr=min(year) gen lexperience=log(1+year-minyr) sum year local y=r(max)-r(min)+1 **All observations to get the grouping variable felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', /// i(personid) j(firmid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) grouponly *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp ********Make table on movers and firms****** sort personid year firmid gen movefirm=1 if firmid[_n-1]!=firmid[_n] & personid[_n-1]==personid[_n] replace movefirm=0 if movefirm==. bysort personid: egen numfirms=total(movefirm) replace numfirms=numfirms+1 bysort firmid: egen nmoversperfirm=total(mover) sort personid year gen newperson=1 if personid[_n-1]!=personid[_n] replace newperson=0 if newperson==. sort firmid year gen newfirm=1 if firmid[_n-1]!=firmid[_n] replace newfirm=0 if newfirm==. tab mover if newperson==1 tab numfirms if newperson==1 tab nmoversperfirm if newfirm==1 felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', takegroup robust /// i(personid) j(firmid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest outreg2 using table_A3, excel append drop(dumyear*) ctitle(Quart `s') /// addtext(Sample, 250-1k, Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) quietly{ ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ cap replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } replace xbcwpatsba=xbcwpatsba-yeareffcwpatsba correlate logcwpatsba rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate logcwpatsba pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate logcwpatsba firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate logcwpatsba yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate logcwpatsba xbcwpatsba, covariance gen float xbcovcwpatsba = r(cov_12) gen float xbvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) correlate firmeffcwpatsba xbcwpatsba, covariance gen float firmxbcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba xbcwpatsba, covariance gen float perxbcovcwpatsba = 2*r(cov_12) correlate yeareffcwpatsba xbcwpatsba, covariance gen float yearxbcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen xbr2cwpatsba=xbcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) } ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba sum varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba *****Store these estimates in files at inventor/firm level collapse firmid firmeffcwpatsba pereffcwpatsba *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(personid cusip6) for var firmeffcwpatsba pereffcwpatsba: rename X lar_X merge 1:1 personid firmid using fulldataindest.dta, nogen update save fulldataindest.dta, replace gen sizequart=1000 gen industry=0 gen movers=0 gen controls=1 gen nomerger=0 gen obsincluded=1 gen establishmentstate=0 gen establishmentcat=0 gen outputmeasure=1 gen selfcites=0 gen coworker=0 collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites sizequart coworker) append using fulldatarsquareds.dta save fulldatarsquareds.dta, replace restore **********************************************************X-LARGE FIRMS******************************************************************** preserve keep if mmninventors>1000 bysort personid: egen minyr=min(year) gen lexperience=log(1+year-minyr) sum year local y=r(max)-r(min)+1 **All observations to get the grouping variable felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', /// i(personid) j(firmid) peff(pereff) feff(firmeff) xb(xb) res(res) mover(mover) group(grp) mnum(nmoversperfirm) pobs(obsperperson) grouponly *****Keep only the first network as defined by patent-year obs egen biggrp=mode(grp) keep if grp==biggrp ********Make table on movers and firms****** sort personid year firmid gen movefirm=1 if firmid[_n-1]!=firmid[_n] & personid[_n-1]==personid[_n] replace movefirm=0 if movefirm==. bysort personid: egen numfirms=total(movefirm) replace numfirms=numfirms+1 bysort firmid: egen nmoversperfirm=total(mover) sort personid year gen newperson=1 if personid[_n-1]!=personid[_n] replace newperson=0 if newperson==. sort firmid year gen newfirm=1 if firmid[_n-1]!=firmid[_n] replace newfirm=0 if newfirm==. tab mover if newperson==1 tab numfirms if newperson==1 tab nmoversperfirm if newfirm==1 felsdvreg logcwpatsba drnd lrnd_3avg_intS lppe_3avg_intS lsale_3avg lopinc_chg_3avg lage lemp lasspats_stock lexperience dumyear2-dumyear`y', takegroup robust /// i(personid) j(firmid) peff(pereffcwpatsba) feff(firmeffcwpatsba) xb(xbcwpatsba) res(rescwpatsba) mover(mover) /// group(grp) mnum(nmoversperfirm) pobs(obsperperson) ftest outreg2 using table_A3, excel append drop(dumyear*) ctitle(Quart `s') /// addtext(Sample, >1k, Year FE, YES, Firm FE, YES, Inventor FE, YES) addstat(Within R2, e(r2_w), R2, 1-e(rss)/e(tss)) label bdec(2) sdec(3) se bracket symbol(*, †, ‡) quietly{ ereturn list gen yeareffcwpatsba=0 forvalues o=2(1)`y'{ cap replace yeareffcwpatsba=_b[dumyear`o'] if dumyear`o'==1 } replace xbcwpatsba=xbcwpatsba-yeareffcwpatsba correlate logcwpatsba rescwpatsba, covariance gen float varlogcwpatsba = r(Var_1) gen float resvarcwpatsba = r(Var_2) correlate logcwpatsba pereffcwpatsba, covariance gen float percovcwpatsba = r(cov_12) correlate logcwpatsba firmeffcwpatsba, covariance gen float firmcovcwpatsba = r(cov_12) correlate logcwpatsba yeareffcwpatsba, covariance gen float yearcovcwpatsba = r(cov_12) gen float yearvarcwpatsba = r(Var_2) correlate logcwpatsba xbcwpatsba, covariance gen float xbcovcwpatsba = r(cov_12) gen float xbvarcwpatsba = r(Var_2) correlate firmeffcwpatsba pereffcwpatsba, covariance gen float firmpercovcwpatsba = 2*r(cov_12) gen float firmvarcwpatsba = r(Var_1) gen float pervarcwpatsba = r(Var_2) correlate firmeffcwpatsba yeareffcwpatsba, covariance gen float firmyearcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba yeareffcwpatsba, covariance gen float peryearcovcwpatsba = 2*r(cov_12) correlate firmeffcwpatsba xbcwpatsba, covariance gen float firmxbcovcwpatsba = 2*r(cov_12) correlate pereffcwpatsba xbcwpatsba, covariance gen float perxbcovcwpatsba = 2*r(cov_12) correlate yeareffcwpatsba xbcwpatsba, covariance gen float yearxbcovcwpatsba = 2*r(cov_12) gen perr2cwpatsba=percovcwpatsba/varlogcwpatsba gen firmr2cwpatsba=firmcovcwpatsba/varlogcwpatsba gen yearr2cwpatsba=yearcovcwpatsba/varlogcwpatsba gen xbr2cwpatsba=xbcovcwpatsba/varlogcwpatsba gen totalr2cwpatsba=1-(e(rss)/e(tss)) } ***** Percentage of variance explained by each level of FEs *cw patents p.a. sum perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba sum varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba *****Store these estimates in files at inventor/firm level collapse firmid firmeffcwpatsba pereffcwpatsba *r2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(personid cusip6) for var firmeffcwpatsba pereffcwpatsba: rename X xl_X merge 1:1 personid firmid using fulldataindest.dta, nogen update save fulldataindest.dta, replace gen sizequart=1001 gen industry=0 gen movers=0 gen controls=1 gen nomerger=0 gen obsincluded=1 gen establishmentstate=0 gen establishmentcat=0 gen outputmeasure=1 gen selfcites=0 gen coworker=0 collapse perr2cwpatsba firmr2cwpatsba yearr2cwpatsba xbr2cwpatsba totalr2cwpatsba varlogcwpatsba pervarcwpatsba firmvarcwpatsba yearvarcwpatsba xbvarcwpatsba resvarcwpatsba firmpercovcwpatsba peryearcovcwpatsba firmyearcovcwpatsba perxbcovcwpatsba firmxbcovcwpatsba yearxbcovcwpatsba, by(industry movers controls nomerger obsincluded establishment* outputmeasure selfcites sizequart coworker) append using fulldatarsquareds.dta save fulldatarsquareds.dta, replace restore cap log close clear * restore use fulldataindest.dta, replace cap drop *r2cwpatsba save fulldataindest.dta, replace log close