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

在SAS线性回归中,如何对4水平分类预测变量进行虚拟编码?

多水平分类变量(race)的虚拟编码方法(用于多元回归)

针对你4水平的race变量,下面分主流统计软件给出具体的虚拟编码实现方式,这些方法都能直接用于多元回归分析:

R语言

R的线性回归工具默认会自动处理分类变量的虚拟编码,不用手动操作:

  • 默认编码:直接用lm()建模,函数会自动把race转为3个哑变量(以race的第一个因子水平为参照组):
    # 假设你的数据框是df,other_predictors是其他预测变量的集合
    model <- lm(Clinical_indicator ~ race + other_predictors, data = df)
    
  • 指定参照组:如果想换参照组,用relevel()调整因子水平的参照项:
    # 把"White"设为参照组(替换成你的实际水平名称)
    df$race <- relevel(df$race, ref = "White")
    model <- lm(Clinical_indicator ~ race + other_predictors, data = df)
    
  • 手动生成哑变量:如果需要完全手动控制,用model.matrix()生成哑变量后合并建模:
    # 生成所有4个水平的哑变量(-1去掉截距项)
    race_dummies <- model.matrix(~ race - 1, data = df)
    # 合并到原数据,建模时排除原race变量
    df_new <- cbind(df, race_dummies)
    model <- lm(Clinical_indicator ~ . - race, data = df_new)
    

Python(statsmodels库)

用statsmodels做回归时,需要确保race是分类类型,之后可以自动或手动生成哑变量:

  • 默认自动编码:将race转为分类类型后,OLS模型会自动生成3个哑变量(以第一个水平为参照):
    import statsmodels.api as sm
    import pandas as pd
    
    # 转换race为分类变量
    df['race'] = pd.Categorical(df['race'])
    # 添加截距项,指定自变量
    X = sm.add_constant(df[['race', 'age', 'bmi']]) # 替换age、bmi为你的其他预测变量
    # 拟合模型
    model = sm.OLS(df['Clinical_indicator'], X).fit()
    
  • 指定参照组/手动生成:用pd.get_dummies()手动生成,通过drop_first=True保留3个哑变量(避免多重共线性):
    # 生成哑变量,以"White"为参照(drop_first=True会去掉第一个水平)
    race_dummies = pd.get_dummies(df['race'], drop_first=True, prefix='race')
    # 合并自变量
    X = pd.concat([df[['age', 'bmi']], race_dummies], axis=1)
    X = sm.add_constant(X)
    model = sm.OLS(df['Clinical_indicator'], X).fit()
    

SPSS

不管是图形界面还是语法,都能轻松实现虚拟编码:

  • 图形界面操作:
    1. 点击分析→回归→线性,把Clinical_indicator选入「因变量」,race和其他预测变量选入「自变量」。
    2. 点击「分类」按钮,把race移到「分类协变量」列表,在「对比」下拉框选「指示符」(这就是虚拟编码),还能在「参照类别」里指定用第一个还是最后一个水平当参照。
  • 语法命令:
    REGRESSION
      /DEPENDENT Clinical_indicator
      /METHOD=ENTER race age bmi  /* 替换age、bmi为你的其他预测变量 */
      /CATEGORICAL VARIABLES=race(INDICATOR)  /* 默认第一个水平为参照 */
      /* 若要指定最后一个水平为参照,用下面这句替换上一行 */
      /CATEGORICAL VARIABLES=race(INDICATOR(LAST))
    

关键注意点

  • 虚拟编码会生成k-1个哑变量(k是分类水平数,这里4个水平生成3个),这是为了避免多重共线性(如果生成4个哑变量,会和回归的截距项完全共线,导致模型无法求解)。
  • 参照组的选择建议结合业务逻辑,比如选样本量最大的种族、或者具有基线意义的类别(比如研究中的主流人群)。

内容的提问来源于stack exchange,提问作者Joy Y. Zhu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:15:43