For the code, see Wayne Chang’s website

## Warning: package 'knitr' was built under R version 4.3.3
## Warning: package 'texreg' was built under R version 4.3.3

R approaches to replicate Peterson ’09

library(foreign)
df.petersen <- read.dta("http://www.kellogg.northwestern.edu/faculty/petersen/htm/papers/se/test_data.dta")
regall = list()

OLS

regall[['OLS']] = lm(y~x, data=df.petersen)

White

library(sandwich)
## Warning: package 'sandwich' was built under R version 4.3.3
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.3.3
## Warning: package 'zoo' was built under R version 4.3.3
model = lm(y ~ x, data=df.petersen)
regall[['White']] = coeftest(model, vcovHC(model, type="HC0"))

Clustered

library(lfe)
## Warning: package 'lfe' was built under R version 4.3.3
## Warning: package 'Matrix' was built under R version 4.3.3
regall[['Firm Cluster']] = felm(y ~ x | 0 | 0 | firmid, data=df.petersen) # cluster by firm only
regall[['Year Cluster']] = felm(y ~ x | 0 | 0 | year, data=df.petersen) # cluster by year only
regall[['Both Cluster']] = felm(y ~ x | 0 | 0 | firmid + year, data=df.petersen) # cluster by both year and firm

Fama-Macbeth

library(plm)
regall[['FM']] = pmg(y ~ x, data=df.petersen, index=c("year","firmid"))
texreg(regall, digits=4)