You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于同一DataFrame的不同子集高效重复统计建模分析?

高效实现多子集混合模型分析的方法

需求背景

你需要基于同一DataFrame的不同子集依次运行混合线性模型分析,具体任务包括:

  • 针对个体会员注册(indvsignup)全量数据构建模型
  • 筛选type为monthly的子集,重新构建indvsignup模型
  • 筛选famsignup列无缺失值的子集,针对家庭会员注册(famsignup)构建模型

当前每次重复分析都重新导入数据集或新建Notebook,效率低下,以下是更高效的实现方案。

数据集示例

responseIDindvsignupfamsignuptypeusageage
11010annualyes56
191monthlyyes19
21NaNmonthlyno26
221annualno19
38NaNannualyes35
318monthlyno39

高效实现步骤

1. 一次性导入数据集

只需要在代码开头导入一次数据集,后续所有分析都基于这个DataFrame操作:

import pandas as pd
import statsmodels.formula.api as smf

# 导入数据集(替换为你的数据路径)
df = pd.read_csv("your_data.csv")
# 注意:确保列名大小写统一,比如原数据是responseID,代码里不要写成ResponseId

2. 封装模型训练函数

把重复的模型训练和结果输出逻辑封装成函数,避免重复编写相同代码:

def run_mixed_model(data, formula, group_col):
    """
    运行混合线性模型并打印模型摘要
    参数:
        data: 用于建模的DataFrame子集
        formula: 模型公式字符串
        group_col: 分组列名
    """
    model = smf.mixedlm(formula, data, groups=data[group_col]).fit()
    print("="*50)
    print(f"模型公式: {formula}")
    print("="*50)
    print(model.summary())
    return model

3. 定义分析任务清单并批量执行

把每个分析任务的关键信息(筛选条件、模型公式、分组列)整理成列表,通过循环批量执行所有任务:

# 定义所有分析任务
analysis_tasks = [
    # 任务1:全量数据跑indvsignup模型
    {
        "name": "全量数据-个体会员注册模型",
        "filter": lambda df: df,  # 全量数据无筛选
        "formula": "indvsignup ~ C(type) + C(usage) + age",
        "group_col": "responseID"
    },
    # 任务2:筛选type=monthly的子集跑indvsignup模型
    {
        "name": "月度用户-个体会员注册模型",
        "filter": lambda df: df[df["type"] == "monthly"],
        "formula": "indvsignup ~ C(usage) + age",
        "group_col": "responseID"
    },
    # 任务3:筛选famsignup无缺失的子集跑famsignup模型
    {
        "name": "家庭会员无缺失数据-家庭会员注册模型",
        "filter": lambda df: df[df["famsignup"].notna()],
        "formula": "famsignup ~ C(type) + C(usage) + age",
        "group_col": "responseID"
    }
]

# 循环执行所有任务
for task in analysis_tasks:
    print(f"\n--- 开始执行:{task['name']} ---")
    filtered_df = task["filter"](df)
    run_mixed_model(filtered_df, task["formula"], task["group_col"])

优势说明

  • 避免重复劳动:不需要每次重复编写模型训练代码,修改任务只需调整任务清单
  • 统一管理:所有分析任务集中在一处,便于维护和修改
  • 效率提升:仅导入一次数据,减少IO操作耗时

内容的提问来源于stack exchange,提问作者drsmj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 13:17:46