我使用像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
答案 0 :(得分:1)
感谢@JohnE和JseBold Slides我找到了测试OLS参数和使用statsmodels
包的OLS参数的线性组合的方式,它与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(人工)系数),您只需要写这段代码:
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
==============================================================================