Python实现 Python的linearmodels中自带FamaMacBeth函数,本文一方面调用这一函数,另一方面自己写,用两种方法实现Fama Macbeth回归,确保结果的准确性。 3.1 数据载入 from linearmodels import FamaMacBeth import numpy as np import pandas as pd import datetime 获取数据源码,后台回复"famamacbeth" 参考文献 [1]https://bashtage.github.io/linearmodels/panel/models.html#linearmodels.panel.model.FamaMacBeth
模块linearmodels提供PandelOLS进行固定效果模型。entity_effects=True表示模拟企业特定因素。这意味着为11家公司创建10(N-1)个虚拟变量。 # Coding method 1 from linearmodels.panel import PanelOLS import statsmodels.api as sm exog = sm.add_constant # Coding method 1 from linearmodels.panel import PanelOLS import statsmodels.api as sm exog = sm.add_constant 模型1:实体效果+时间效果 # Coding method 1 from linearmodels.panel import PanelOLS import statsmodels.api as 模型3:汇总OLS # Coding method 1 from linearmodels.panel import PanelOLS import statsmodels.api as sm exog
pip install linearmodels Requirement already satisfied: linearmodels in c:\anaconda\envs\textbook\lib (4.17) Requirement already satisfied: scipy>=1 in c:\anaconda\envs\textbook\lib\site-packages (from linearmodels from linearmodels.iv import IV2SLS iv = 'Preference_for_Leisure ~ 1 + Border_Distance_in_Km + t_dist pip install linearmodels Requirement already satisfied: linearmodels in c:\anaconda\envs\textbook\lib from linearmodels import RandomEffects re = RandomEffects(Y, df[['const', 'st_louis_fed']]) print(re.fit
statsmodels.api as smimport matplotlib.pyplot as pltimport seaborn as snsfrom scipy import statsfrom linearmodels.iv iv_model = IV2SLS.from_formula(formula, data=df).fit() print("="*60) print("正式2SLS估计结果(使用linearmodels 还有其他工具变量估计方法,如LIML,对弱工具变量更稳健:# LIML估计def liml_estimation(df): """有限信息最大似然估计""" try: from linearmodels.iv liml_model.summary) return liml_model except ImportError: print("LIML估计需要更新版本的linearmodels ("两个工具变量的2SLS估计:") print(iv_model_two.summary) # 过度识别检验(Sargan检验) # 注意:linearmodels
导入的模块: import matplotlib.pyplot as plt import seaborn as sns import seaborn.linearmodels as snsl from
导入的模块: import matplotlib.pyplot as plt import seaborn as sns import seaborn.linearmodels as snsl from
测试了CatBoost(没有GPU的速度太慢)和LinearModels(不够精确)。
# 标准误比较def compare_standard_errors(model, df): """比较不同标准误调整方法""" import linearmodels as lm from linearmodels.panel import PanelOLS # 准备面板数据 df_panel = df.set_index(['id', 'period']) # 使用linearmodels进行面板数据估计 # 注意:这里需要将数据转换为适合面板分析的形式 try: # 双向固定效应模型 panel_model = PanelOLS.from_formula '聚类标准误': '需要完整面板数据模型' # 实际应用中这里应该是具体数值 } except: se_comparison = {'提示': '需要安装linearmodels
4.代码 import os import pandas as pd import numpy as np import datetime from linearmodels import FamaMacBeth
代码和结果图如下: import matplotlib.pyplot as plt plt.figure(figsize=(12, 10)) _ = sns.linearmodels.corrplot(
不要使用库“linearmodels”。使用库“statsmodels”手动进行 2SLS。 5)暴露于巴勒斯坦股票是否会降低投票右翼政党的概率?运行一些回归来证明你的立场。