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

R Studio中Caret包数据拆分后glm()仍使用全量数据训练问题

问题根源

你拟合glm模型的公式写法存在逻辑冲突:

  • 你在glm()的data参数中指定了训练集Training,但公式中每个自变量都使用了dataset$x1的写法,这种全局调用全量数据集变量的写法优先级高于data参数的指定,所以模型最终读取的是全量dataset里的所有观测值。
  • 额外注意:caret包的数据拆分函数名是首字母小写的createDataPartition,如果你的代码运行时提示找不到函数,需要修正大小写。

解决方案

推荐写法

去掉公式里的dataset$前缀,直接写变量名,glm()会自动从你指定的Training数据集里读取对应变量:

glm(y ~ x1 + x2 + x3, family = binomial(link = "logit"), data = Training)

备选写法

如果需要显式指定变量所属的数据集,统一使用训练集名称即可,此时可以省略data参数:

glm(Training$y ~ Training$x1 + Training$x2 + Training$x3, family = binomial(link = "logit"))

效果验证

拟合完成后调用nobs(模型对象名)即可查看模型实际使用的训练样本量,确认数值和nrow(Training)的结果一致即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:15:03