def reg_3(): # SOURCE: Hansen, Chapters 4.19, page 126. filename = data_path('cps09mar.txt') frame = pd.read_csv(filename) frame = featurize(frame) frame = filter_3(frame) y = 'log(wage)' x = [ 'education', 'experience', 'experience^2/100', 'female', 'female*union', 'male*union', 'female*married', 'male*married', 'female*fromerly_married', 'male*formerly_married', 'hispanic', 'black', 'american_indian', 'asian', 'mixed_race', 'intercept', ] reg = regress.Reg(x, y) reg.fit(frame) # Chapter 4.19, pages 126-127 reg.summarize() # OUT: table 4.2, page 127
def reg_1(): # SOURCE: Hansen, Chapters 4.21, equation 3.4.41, page 130 filename = data_path('ddk2011.txt') frame = pd.read_csv(filename) frame = featurize(frame) frame = filter_1(frame) x = ['intercept', 'tracking'] y = 'testscore' reg = regress.Reg(x, y) reg.fit(frame) reg.summarize()
def reg_2(): # SOURCE: Hansen, Chapters 4.21, equation 3.4.41, page 130 filename = data_path('ddk2011.txt') frame = pd.read_csv(filename) frame = featurize(frame) frame = filter_1(frame) x = ['intercept', 'tracking'] y = 'testscore' grp = 'schoolid' reg = regress.Cluster(x, y, grp) reg.fit(frame) reg.summarize(vce='cr3') # OUT: see Hansen's equation 4.52, page 134
def reg_2(): # SOURCE: Hansen, Chapters 3.7, equation 3.14, pages 76. filename = data_path('cps09mar.txt') frame = pd.read_csv(filename) frame = featurize(frame) frame = filter_2(frame) y = 'log(wage)' x = ['intercept', 'education', 'experience', 'experience^2'] reg = regress.Reg(x, y) reg.fit(frame) # Chapter 3.21, page 92 print(frame.shape) # OUT: (268, 18) print(reg.influence()) # OUT: 29%
def reg_1(): # SOURCE: Hansen, Chapters 3.7, equation 3.13, page 75 filename = data_path('cps09mar.txt') frame = pd.read_csv(filename) frame = featurize(frame) frame = filter_1(frame) y = 'log(wage)' x = ['education', 'intercept'] reg = regress.Reg(x, y) reg.fit(frame) # SOURCE: chapter 4.15, page 121 print(reg.vce(estimator='0')) # OUT: [[0.002, -0.031], [-0.031, 0.499]] print(reg.vce(estimator='hc2') ) # OUT: [[ 0.0009314 -0.01479734], [-0.01479722 0.24282344]] # SOURCE: chapter 4.15, page 122 print(reg.std_err(estimator='0')) # OUT: [0.045, 0.707] print(reg.std_err(estimator='hc0')) # OUT: [0.029, 0.461] print(reg.std_err(estimator='hc1')) # OUT: [0.030, 0.486] print(reg.std_err(estimator='hc2')) # OUT: [0.031, 0.493] print(reg.std_err(estimator='hc3')) # OUT: [0.033, 0.527]
def reg_4(): # see Chapter 7.11 filename = data_path('cps09mar.txt') frame = pd.read_csv(filename) frame = featurize(frame) frame = filter_4(frame) y = 'log(wage)' x = ['education', 'experience', 'experience^2/100', 'intercept'] reg = regress.Reg(x, y) reg.fit(frame) reg.summarize() # OUT: equation 7.31, page 236 print('\nvce(hc2): ') vce = pd.DataFrame(reg.vce('hc2'), index=reg.x_cols, columns=reg.x_cols) print(vce) # OUT: equation 7.32, page 236 # Check that nlcom returns reasonable results gradient = lambda beta: [100, 0, 0, 0] print('\ns(theta_1):', nlcom.std_err(reg, gradient=gradient)) # OUT: ~0.8 gradient = lambda beta: [0, 100, 20, 0] print('s(theta_2):', nlcom.std_err(reg, gradient=gradient)) # NOTE: the preceding result does not agree with Hansen's answer gradient = lambda beta: [ 0, (-50 / beta[2]), (50 * beta[1] / (beta[2]**2)), 0 ] print('s(theta_3):', nlcom.std_err(reg, gradient=gradient)) # OUT: ~7.0 # Check that htest.Wald returns reasonable results R = np.array([[100, 0, 0, 0], [0, 100, 20, 0]]) theta = np.matmul(R, reg.beta) gradient = lambda beta: np.transpose(R) vce = nlcom.vce(reg, gradient=gradient) # [[0.632, 0.103], [0.103, 0.157]] stat = htest.Wald(theta, vce=vce) print('Wald (stat):', stat.value) print('Wald (p-value):', stat.p_value())