先看看示例
作者提供的示例,实际效果取决于你的输入和使用工具。
输入
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