【问题标题】:Build Regression Model with Categorical Variable使用分类变量构建回归模型
【发布时间】:2015-12-22 07:11:09
【问题描述】:

您好,我是 R 新手,我希望有人能给我一些关于构建回归模型的提示。我有一些类似于下面的示例数据的示例数据,其中包含路径变量等分类变量。我想将这些分类变量转换为如下所示的“转换数据”之类的二进制变量,因此我可以使用它们创建一个回归模型,以根据每个路径上的音量预测 WaitTime。在 python 中有一个叫做 getdummies 的函数可以很好地做到这一点。如果有人可以给我关于 r 中类似函数的提示,或者提供一种使用分类变量构建回归模型的方法。我将不胜感激。我的最终目标是建立回归模型,然后找到每条路径的音量值,这将使 WaitTIme 最小化。任何关于这方面的提示都将不胜感激。
样本数据: Path WaitTime Volume AD_IB 195 3 GMC_DT 154 4 CD_ADT 192 2 Ord_IB 326 1

转换后的数据:
AD_IB GMC_DT CD_ADT Ord_IB WaitTime Volume 1 0 0 0 195 3 0 1 0 0 154 4 0 0 1 0 192 2 0 0 0 1 326 1

【问题讨论】:

  • Path 中有多少个类别?您可以使用 table(data$Path) 或 unique(data$Path) 检查它是否是 data.frame。我问,因为从你的例子来看,没有重复的值。如果您只想创建虚拟变量,那么您可以直接使用它或创建一个因子,然后使用 lm() 运行模型。
  • 您是否尝试过将分类变量添加到模型中会发生什么?
  • 您不需要这样做。回归函数会自动为您创建虚拟向量。如果您确实需要了解回归函数在“幕后”使用了什么,请查看?model.matrix
  • 除了人们所说的,如果你还想这样做:setDT(data)[,AD_IB:= ifelse(Path=="AD_IB", 1, 0)]

标签: r regression


【解决方案1】:

R 会自动为您执行此操作:

set.seed(1)
d <- data.frame(cat = factor(LETTERS[sample(3, 100, TRUE)]), y = rnorm(100))
lm(y ~ cat, d)

#     # Call:
# lm(formula = y ~ cat, data = d)
# 
# Coefficients:
# (Intercept)         catB         catC  
#     -0.2385       0.3518       0.2493  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 2014-11-29
    • 2018-07-04
    • 1970-01-01
    • 2022-11-29
    相关资源
    最近更新 更多