-
读取数据:首先,你需要使用
pandas
库来读取包含个股回报率和市场回报率的Excel文件。 -
筛选数据:根据指定的日期区间(2018-08-20 至 2019-04-24),筛选出对应的数据行。
-
构建回归模型:使用
statsmodels
库构建一个线性回归模型,其中个股收益率作为因变量,市场收益率作为解释变量。 -
拟合模型:使用
fit
方法拟合模型,并获取回归方程的参数。 -
回归方程:根据回归结果,写出回归方程
import pandas as pd
import statsmodels.api as sm
# 读取Excel文件
df = pd.read_excel('事件一个股、市场.xlsx')
# 筛选指定日期区间内的数据
start_date = '2018-08-20'
end_date = '2019-04-24'
df_filtered = df[(df['Trddt'] >= start_date) & (df['Trddt'] <= end_date)]
# 准备回归数据
X = df_filtered['Dretwdtl'] # 市场回报率
y = df_filtered['Dretwd'] # 个股回报率
# 添加常数项以便进行回归
X = sm.add_constant(X)
# 构建并拟合模型
model = sm.OLS(y, X).fit()
# 输出回归结果摘要
print(model.summary())
# 从模型结果中提取回归方程的参数
alpha = model.params['const']
beta = model.params['Dretwdtl']
# 写出回归方程
regression_equation = f"个股收益率 = {alpha:.4f} + {beta:.4f} * 市场收益率"
print(regression_equation)
报错1
可能由以下几个原因引起:
-
包含非数值类型的列:如果你的DataFrame中包含非数值类型的列(如字符串或日期时间对象),直接转换为NumPy数组时可能会失败。
-
数据类型不一致:尝试将包含不同数据类型的列转换为单一数据类型的NumPy数组可能会导致这个错误。
-
缺失值:如果DataFrame中存在缺失值(NaN),在转换为NumPy数组之前没有进行适当的处理,也可能导致这个错误。