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

在R语言glm()函数中,family="binomial"与family=binomial是否等效?

R中glm()二元分类模型的family参数两种写法对比
  • family = "binomial" 和 family = binomial 在glm()中完全等价,可以互换使用,生成的拟合结果完全一致。

原因解释

glm()的family参数支持两种输入形式:

  1. 字符型字符串(如"binomial"):glm内部会自动将其映射为对应的分布族函数(即调用binomial()),生成标准的二项分布族对象。
  2. 分布族函数名(如binomial):传入函数名时,glm会自动执行该函数,生成同样的分布族对象。

两种方式最终传递给glm的是同一个分布族对象,因此拟合过程和结果没有任何差异。

代码验证示例

用构造的二元分类数据测试两种写法的一致性:

# 构造二元分类数据集:判断鸢尾花是否为setosa
iris_bin <- iris
iris_bin$is_setosa <- as.factor(ifelse(iris_bin$Species == "setosa", 1, 0))

# 两种方式拟合逻辑回归模型
model_str <- glm(is_setosa ~ Sepal.Length + Sepal.Width, data = iris_bin, family = "binomial")
model_fun <- glm(is_setosa ~ Sepal.Length + Sepal.Width, data = iris_bin, family = binomial)

# 对比模型系数
all.equal(coef(model_str), coef(model_fun))
# 输出结果:TRUE

# 对比完整模型对象
all.equal(model_str, model_fun)
# 输出结果:TRUE

扩展:指定额外参数的情况

如果需要自定义link函数(比如用probit代替默认的logit),两种写法也都支持且等价:

  • 字符串写法:glm(..., family = "binomial", link = "probit")
  • 函数写法:glm(..., family = binomial(link = "probit"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 19:44:51