Пример #1
0
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
Пример #2
0
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()
Пример #3
0
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
Пример #4
0
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%
Пример #5
0
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]
Пример #6
0
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())