获取线性模型fama macbeth函数输出

时间:2019-06-24 05:48:36

标签: python regression finance

此功能有问题。我想对按价值和规模排名的25个投资组合进行横截面回归分析。我在方程式的右边有7个独立变量。

import pandas as pd
import numpy as np
from linearmodels import FamaMacBeth

#creating a multi_index of independent variables
ind_var = pd.read_excel('FAMA_MACBETH.xlsx')
ind_var['date'] = pd.to_datetime(ind_var['date'])
# dropping our dependent variables
ind_var = ind_var.drop(['Mkt_rf', 'div_innovations', 'term_innovations',
   'def_innovations', 'rf_innovations', 'hml_innovations',
   'smb_innovations'],axis = 1)
ind_var = pd.DataFrame(ind_var.set_index('date').stack())
ind_var.columns = ['x']
x = np.asarray(ind_var)
len(x)

11600

#creatiing a multi_index of dependent variables
# reading in our data
dep_var = pd.read_excel('FAMA_MACBETH.xlsx')
dep_var['date'] = pd.to_datetime(dep_var['date'])
# dropping our independent variables
dep_var = dep_var.drop(['SMALL_LoBM', 'ME1_BM2', 'ME1_BM3', 'ME1_BM4',
   'SMALL_HiBM', 'ME2_BM1', 'ME2_BM2', 'ME2_BM3', 'ME2_BM4', 'ME2_BM5',
   'ME3_BM1', 'ME3_BM2', 'ME3_BM3', 'ME3_BM4', 'ME3_BM5', 'ME4_BM1',
   'ME4_BM2', 'ME4_BM3', 'ME4_BM4', 'ME4_BM5', 'BIG_LoBM', 'ME5_BM2',
   'ME5_BM3', 'ME5_BM4', 'BIG_HiBM'],axis = 1)
dep_var = pd.DataFrame(dep_var.set_index('date').stack())
dep_var.columns = ['y']
y = np.asarray(dep_var)
len(y)

3248

mod = FamaMacBeth(y, x)
res = mod.fit(cov_type='kernel', kernel='Parzen')

理想情况下输出带有tstats和错误

我尝试了很多方法来使它起作用。我现在真的在考虑使用SAS。真的,我更希望与熊猫一起运行

我期望具有标准误差和t统计量的横截面回归输出

1 个答案:

答案 0 :(得分:0)

我一口气工作了。请参见此site,并在下面运行OLS的代码行:“此处使用标准的Grunfeld投资数据显示差异。”

(请注意,这一行很重要:etdata = data.set_index(['firm','year']),否则Python将不知道在其上运行F&McB的正确尺寸。)

然后运行:

from linearmodels import FamaMacBeth
FamaMacBeth(etdata.invest,etdata[['value','capital']]).fit()

请注意,我将linearmodels更新为最新版本,使我可以访问数据。