Python代码
# 导入必要的库
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
import seaborn as sns
# 1. 加载数据
data = pd.read_csv('111.csv', encoding='utf-8-sig')
# 2. 数据预处理
print(data.head()) # 查看数据的前几行
print(data.isnull().sum()) # 检查缺失值
# 填补缺失值或删除缺失值
data.dropna(inplace=True) # 删除缺失值
# 3. 定义自变量和因变量
Y = data[['Y1', 'Y2', 'Y3']] # 多个因变量
X = data[['X1', 'X2', 'X3', 'X4']]
# 4. 添加常数项
X = sm.add_constant(X) # 添加截距项
# 5. 建立多重响应回归模型
from statsmodels.multivariate.manova import MANOVA
manova = MANOVA(endog=Y, exog=X)
# 6. 查看模型结果
print(manova.mv_test()) # 输出多元方差分析结果
# 7. 计算拟合值和残差
model_Y1 = sm.OLS(Y['Y1'], X).fit() # 对第一个因变量进行线性回归
residuals_Y1 = model_Y1.resid
fitted_Y1 = model_Y1.fittedvalues
model_Y2 = sm.OLS(Y['Y2'], X).fit() # 对第二个因变量进行线性回归
residuals_Y2 = model_Y2.resid
fitted_Y2 = model_Y2.fittedvalues
model_Y3 = sm.OLS(Y['Y3'], X).fit() # 对第三个因变量进行线性回归
residuals_Y3 = model_Y3.resid
fitted_Y3 = model_Y3.fittedvalues
# 8. 结果可视化
# 残差图:对于每个因变量,绘制残差图
for i, (fitted, residuals) in enumerate(zip([fitted_Y1, fitted_Y2, fitted_Y3],
[residuals_Y1, residuals_Y2, residuals_Y3])):
plt.figure(figsize=(10, 6))
sns.scatterplot(x=fitted, y=residuals)
plt.axhline(0, linestyle='--', color='red')
plt.title(f'残差图 - Y{i + 1}')
plt.xlabel('拟合值')
plt.ylabel('残差')
plt.show()
# 9. 将模型评估结果输出到 Markdown 文件
with open('模型评估结果.md', 'w', encoding='utf-8') as f:
f.write("# 模型评估结果\n\n")
f.write("## Y1 的模型摘要\n")
f.write("```\n")
f.write(str(model_Y1.summary()))
f.write("```\n\n")
f.write("## Y2 的模型摘要\n")
f.write("## Y2 的模型摘要\n")
f.write("```\n")
f.write(str(model_Y2.summary()))
f.write("```\n\n")
f.write("## Y3 的模型摘要\n")
f.write("```\n")
f.write(str(model_Y3.summary()))
f.write("```\n\n")
f.write("## 残差分析\n")
f.write("### Y1 残差\n")
f.write("残差图已在可视化部分展示。\n\n")
f.write("### Y2 残差\n")
f.write("残差图已在可视化部分展示。\n\n")
f.write("### Y3 残差\n")
f.write("残差图已在可视化部分展示。\n\n")
f.write("## 其他信息\n")
f.write("可视化和模型结果提供了对模型性能的深入理解。\n")
# 结束
print("模型评估结果已输出到 '模型评估结果.md' 文件中。")主要功能和解释
功能
该脚本用于进行多元线性回归分析,主要通过对多个因变量(Y1、Y2、Y3)与多个自变量(X1、X2、X3、X4)之间的关系进行建模和评估。它包括数据加载、预处理、模型建立、结果可视化和模型评估的输出。
解释
- 加载数据:使用
pandas库的read_csv函数读取 CSV 文件中的数据。 - 数据预处理:先使用
head()查看数据的前几行,再使用isnull().sum()检查缺失值的数量,最后通过dropna()删除含有缺失值的行,以确保后续分析的准确性。 - 定义自变量和因变量:将数据框中的特定列分配给因变量(Y)和自变量(X)。
- 添加常数项:使用
sm.add_constant()函数添加常数项,以便更好地拟合数据。 - 建立多重响应回归模型:使用
statsmodels库中的MANOVA类构建多元方差分析(MANOVA)模型,以评估多个因变量与自变量之间的关系。 - 查看模型结果:调用
mv_test()方法查看模型的统计结果,以评估自变量对因变量的影响。 - 计算拟合值和残差:为每个因变量建立线性回归模型,计算其拟合值和残差。
- 结果可视化:通过绘制残差图来可视化模型的拟合效果。
- 将模型评估结果输出到 Markdown 文件:使用文件写入操作,将模型摘要和分析结果写入
.md文件。