-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathExample-8-6.py
More file actions
33 lines (27 loc) · 1.2 KB
/
Copy pathExample-8-6.py
File metadata and controls
33 lines (27 loc) · 1.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import wooldridge as woo
import pandas as pd
import statsmodels.formula.api as smf
k401ksubs = woo.dataWoo('401ksubs')
# subsetting data:
k401ksubs_sub = k401ksubs[k401ksubs['fsize'] == 1]
# OLS (only for singles, i.e. 'fsize'==1):
reg_ols = smf.ols(formula='nettfa ~ inc + I((age-25)**2) + male + e401k',
data=k401ksubs_sub)
results_ols = reg_ols.fit(cov_type='HC0')
# print regression table:
table_ols = pd.DataFrame({'b': round(results_ols.params, 4),
'se': round(results_ols.bse, 4),
't': round(results_ols.tvalues, 4),
'pval': round(results_ols.pvalues, 4)})
print(f'table_ols: \n{table_ols}\n')
# WLS:
wls_weight = list(1 / k401ksubs_sub['inc'])
reg_wls = smf.wls(formula='nettfa ~ inc + I((age-25)**2) + male + e401k',
weights=wls_weight, data=k401ksubs_sub)
results_wls = reg_wls.fit()
# print regression table:
table_wls = pd.DataFrame({'b': round(results_wls.params, 4),
'se': round(results_wls.bse, 4),
't': round(results_wls.tvalues, 4),
'pval': round(results_wls.pvalues, 4)})
print(f'table_wls: \n{table_wls}\n')