我使用像 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
我使用像 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
感谢@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
==============================================================================