R语言中使用For循环实现CAPM模型回归并批量存储结果
CAPM模型批量回归实现方案
你需要拟合的CAPM回归公式为 Ri = α + β×(rmrf) + ε,对XS1到XS10共10个被解释变量分别完成回归并存储结果,可以参考以下两种主流开发语言的实现方案:
Python 实现(基于pandas + statsmodels)
先安装对应依赖:pip install pandas statsmodels numpy
- 步骤1:导入依赖并加载数据
import pandas as pd import statsmodels.api as sm import numpy as np # 替换为你的数据路径,数据需包含rmrf列和XS1~XS10共11列核心字段 df = pd.read_csv("你的本地数据路径.csv")
- 步骤2:批量拟合回归并存储结果
# 为自变量添加常数项,对应公式中的截距α X = sm.add_constant(df['rmrf']) # 存储完整回归对象的字典,可随时调取单个回归的全部指标 reg_result_objs = {} # 存储核心指标的汇总表,方便直接导出查看 summary_df = pd.DataFrame(columns=['被解释变量', '截距α', 'α显著性p值', 'β系数', 'β显著性p值', 'R平方', '调整R平方']) for seq_id in range(1, 11): y_col = f"XS{seq_id}" y = df[y_col] # 拟合OLS回归 model = sm.OLS(y, X).fit() # 存储完整回归对象 reg_result_objs[y_col] = model # 提取核心指标写入汇总表 summary_df.loc[len(summary_df)] = [ y_col, round(model.params['const'], 6), round(model.pvalues['const'], 6), round(model.params['rmrf'], 6), round(model.pvalues['rmrf'], 6), round(model.rsquared, 6), round(model.rsquared_adj, 6) ]
- 步骤3:导出结果到本地
# 导出核心指标汇总表 summary_df.to_csv("CAPM批量回归汇总结果.csv", index=False, encoding='utf-8-sig') # 可单独导出单个序列的完整回归报告,例如下方导出XS1的完整回归结果 with open("XS1_CAPM回归详细报告.txt", "w") as f: f.write(reg_result_objs['XS1'].summary().as_text())
R 实现(基于tidyverse + broom)
- 步骤1:导入依赖并加载数据
library(tidyverse) library(broom) # 替换为你的本地数据路径 df <- read.csv("你的本地数据路径.csv")
- 步骤2:批量拟合回归并存储结果
# 构造10组回归公式 formula_list <- paste0("XS", 1:10, " ~ rmrf") %>% map(as.formula) # 批量拟合回归,存储完整回归对象 reg_result_objs <- map(formula_list, ~ lm(.x, data = df)) names(reg_result_objs) <- paste0("XS", 1:10) # 提取核心指标生成汇总表 summary_df <- map_dfr(reg_result_objs, ~ tidy(.x) %>% pivot_wider(names_from = term, values_from = estimate:p.value) %>% mutate( rsquared = summary(.x)$r.squared, adj_rsquared = summary(.x)$adj.r.squared ), .id = "被解释变量")
- 步骤3:导出结果到本地
# 导出核心指标汇总表 write.csv(summary_df, "CAPM批量回归汇总结果.csv", row.names = FALSE, fileEncoding = "utf-8") # 导出单个序列的完整回归报告,例如下方导出XS1的完整结果 sink("XS1_CAPM回归详细报告.txt") summary(reg_result_objs[["XS1"]]) sink()
内容的提问来源于stack exchange,提问作者Amirgiano
相关产品推荐
相关产品推荐

