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

逻辑回归创建新变量时系数异常问题求助

问题排查与分析

首先你的mutate代码逻辑是对的:Subway对应0,McDonalds对应1,这部分没有问题。系数数值“不准确”的感知大概率来自以下几个原因,逐一排查:

  • 混淆了逻辑回归系数的含义:
    glm输出的系数是对数优势比(log odds ratio),不是概率或直接的关联强度。比如calories的系数为0.01,代表每增加1单位卡路里,属于McDonalds的对数优势比增加0.01,转换成更直观的关联倍数需要用exp(log$coefficients)。

  • 变量尺度差异过大:
    calories(通常几百)、sodium(通常几千)、protein(几十)的数值范围差异极大,未标准化的情况下,系数会因为变量尺度被压缩/放大,看起来“不符合预期”。可以先对变量做标准化再建模:

    rest <- fastfood %>%
      filter(restaurant %in% c("McDonalds", "Subway")) %>%
      mutate(restbin = ifelse(restaurant == "Subway", 0, 1),
             across(c(calories, sodium, protein), scale)) # 标准化变量
    log <- glm(restbin ~ calories + sodium + protein, binomial(), data = rest)
    round(log$coefficients, 2)
    
  • 数据过滤是否正确:
    执行table(rest$restaurant)确认过滤后的数据是否只有McDonalds和Subway,避免混入其他餐厅数据干扰模型结果。

  • 模型方向是否符合预期:
    你的模型是用营养变量预测“是否为McDonalds”,如果目标是看餐厅对营养变量的影响,那模型方向应该反过来:glm(calories ~ restbin, gaussian(), data=rest)(可替换为其他营养变量),这时候系数才是餐厅对应的营养变量差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:00:51