如何用apply家族函数为DataFrame多因变量构建双自变量线性回归模型
使用apply家族函数实现多因变量线性回归
我来给你捋清楚怎么用apply家族函数搞定这个多因变量的线性回归需求哈。首先咱们先把你的数据整理成DataFrame,然后用pandas的apply系列函数来批量拟合5个回归模型。
步骤1:准备数据和依赖库
首先得导入需要的库,然后构造你的数据集:
import pandas as pd import statsmodels.api as sm # 构造你提供的数据集 data = { 'samples.L': [10, 10, 25, 25], 'samples.T': [1.0, 3.5, 1.0, 3.5], 'le.1': [9.683726, 9.828530, 24.675467, 24.822328], 'le.2': [9.691982, 9.829962, 24.677010, 24.822601], 'le.3': [9.704387, 9.832273, 24.679439, 24.823026], 'le.4': [9.719390, 9.835296, 24.682560, 24.823410], 'le.5': [9.735400, 9.838709, 24.685718, 24.823209] } df = pd.DataFrame(data)
步骤2:定义回归拟合函数
先写一个函数,输入单个因变量的列名,就能返回拟合好的线性回归模型:
def fit_single_regression(y_col_name): # 提取自变量,记得添加截距项 X = sm.add_constant(df[['samples.L', 'samples.T']]) # 提取对应的因变量 y = df[y_col_name] # 拟合普通最小二乘回归模型 model = sm.OLS(y, X).fit() return model
步骤3:用apply批量生成模型
咱们把所有le.开头的因变量列名整理成一个Series,然后用apply函数逐个传入上面的拟合函数,就能一次性得到5个模型:
# 筛选出所有需要作为因变量的列 target_cols = [col for col in df.columns if col.startswith('le.')] # 使用Series的apply批量拟合模型,这就是apply家族的核心用法 regression_models = pd.Series(target_cols).apply(fit_single_regression)
步骤4:查看模型结果
现在你可以通过索引来访问每个模型,比如查看le.1的回归结果:
# 查看单个模型的详细摘要 print(regression_models['le.1'].summary()) # 或者循环遍历所有模型,打印每个模型的结果 for col, model in zip(target_cols, regression_models): print(f"\n===== 因变量 {col} 的回归模型结果 =====") print(model.summary())
这样就完美实现了用apply家族函数批量处理多因变量的线性回归需求,代码简洁还能批量完成重复工作。
内容的提问来源于stack exchange,提问作者dawei
相关产品推荐
相关产品推荐

