1

我使用像 numpy 和 pandas + statsmodel 这样的 scipy 项目包来进行一些计量经济学工作,比如回归,现在我想要一个显示 β1+β2=1 的测试。

我的公式是: $ Ln(Q_i) = \beta_0 + \beta_1 Ln(L_i) + \beta_2 Ln(K_i) $

我知道在 stata 中我必须使用此代码,但在 python 中我不知道测试 β1+β2=1 的最佳方法是什么:

test ln(K)+ln(L)=1
4

1 回答 1

1

感谢@JohnE 和 JseBold Slides,我找到了如何使用包测试 OLS 参数和 telt 参数线性组合的方法statsmodels,它适用于patsy公式,而且非常简单,这是我的代码:

import pandas as pn
import numpy as np
import statsmodels.formula.api as smf

\\reading stata data file:
dp4 = pn.read_stata('datapset4.dta')

\\Rergession:
formula = 'Ln(output) ~ Ln(labor) +Ln(capital)   '
cb= smf.ols(formula, data = dp4).fit()

\\Hypothesis Test for H0: "beta1 + beta 2 = 1"
print(cb.t_test("Ln(labor) +Ln(capital)=1"))



                           Test for Constraints                             
==============================================================================
                 coef    std err          t      P>|t|      [95.0% Conf. Int.]
------------------------------------------------------------------------------
c0             0.9787      0.063     -0.340      0.737         0.850     1.108
==============================================================================

因此,为了测试参数的线性组合,您只需为所需的变量和线性组合编写 patsy 公式,并将其放入回归的 t_test 或 f_test 方法中:

cb.t_test("Ln(labor) +Ln(capital)=1")

为了测试关于参数的假设,您只需要在引号内编写要测试的方程,例如,如果您要测试 beta1 = 1/2,(beta1 作为 Ln(labor) 的系数),您只需要写这个代码:

print(cb.t_test("Ln(labor)=0.5"))
                             Test for Constraints                             
==============================================================================
                 coef    std err          t      P>|t|      [95.0% Conf. Int.]
------------------------------------------------------------------------------
c0             0.6030      0.126      0.818      0.422         0.343     0.863
==============================================================================
于 2016-04-03T11:00:13.373 回答