跳到主要内容
哒哒星球DADA PLANET

Skill · 已公开版本

statsmodels · 用 Statsmodels 建模并检查统计假设

针对回归或时间序列问题选择模型,结合诊断、区间估计和残差分析解释结果。

先看看示例

作者提供的示例,实际效果取决于你的输入和使用工具。

输入

study.csv:score、hours、prior_score;一行一位学生;关注关联,非随机试验。

输出

编辑示例 · 未运行

import pandas as pd
import statsmodels.formula.api as smf
from statsmodels.stats.diagnostic import het_breuschpagan
df = pd.read_csv("study.csv").dropna(subset=["score", "hours", "prior_score"])
fit = smf.ols("score ~ hours + prior_score", data=df).fit(cov_type="HC3")
print(fit.summary())
print(het_breuschpagan(fit.resid, fit.model.exog))
# 报告注明:控制 prior_score 后的关联,不解释为增加学习时长的因果效果。

方法说明

针对回归或时间序列问题选择模型,结合诊断、区间估计和残差分析解释结果。

具体任务

拟合有诊断的回归模型:根据因变量与研究目标选择 OLS 或 GLM,输出参数与残差检查代码。

验证时间序列模型:按时间切分训练和验证,检查误差与残差,避免用未来数据预测过去。

必需材料

数据与变量定义

分析目标及模型假设

可选材料

已知分组或时间结构

基准模型和报告格式

使用门槛

有 Python 分析环境,能够区分预测问题与参数推断问题。

这个 Skill 额外提供的方法

在拟合之后补上诊断和解释边界,避免只拿系数表做结论。

编辑示例(未运行)

检查练习时间与测试成绩的关系

任务:给匿名课堂数据写 OLS 草稿并保留诊断入口。

输入:
study.csv:score、hours、prior_score;一行一位学生;关注关联,非随机试验。

结果片段:
```python
import pandas as pd
import statsmodels.formula.api as smf
from statsmodels.stats.diagnostic import het_breuschpagan
df = pd.read_csv("study.csv").dropna(subset=["score", "hours", "prior_score"])
fit = smf.ols("score ~ hours + prior_score", data=df).fit(cov_type="HC3")
print(fit.summary())
print(het_breuschpagan(fit.resid, fit.model.exog))
# 报告注明:控制 prior_score 后的关联,不解释为增加学习时长的因果效果。
```

代码演示模型和诊断步骤,没有虚构系数、p 值或拟合优度。 此为编辑示例,未安装或运行上游 Skill。

首次任务

用【数据文件】和【变量说明】分析【问题】,说明模型选择并写拟合及诊断脚本;验收:记录缺失处理、报告区间估计、明确因果边界。
必需材料:数据与变量定义:【请填写或粘贴】;分析目标及模型假设:【请填写或粘贴】

验收方法

因变量类型是否适合所选模型

残差、共线性或序列相关是否按问题检查

估计值与不确定性是否共同报告

依赖与准备

上游固定版要求 Python 3.9+ 与 Statsmodels 0.14.6 兼容依赖;可选预测指标代码还需 scikit-learn。

使用边界

统计显著性不代表业务效果重要,观察模型不能自动证明因果。

模型假设、缺失处理和时间切分错误会使推断失效。

排错

模型拟合成功但残差有明显结构:检查遗漏变量、函数形式或时间结构,不只更换显著性阈值。

系数因单位变化难以解释:记录原始单位,选择有业务意义的变化幅度解释系数。

固定来源

https://github.com/K-Dense-AI/scientific-agent-skills/blob/065b734670d7d990627dbc06a05b5a99be33f1f1/skills/statsmodels/SKILL.md