通过分类变量级别估计 h2o glm 系数

Posted

技术标签:

【中文标题】通过分类变量级别估计 h2o glm 系数【英文标题】:estimate h2o glm coefficients by a categorical variable level 【发布时间】:2017-04-22 23:31:48 【问题描述】:

我想通过 h2o glm 中的分类变量级别来估计预测变量的系数。例如,如果我的数据框有产品价格(连续变量)和产品类型(分类变量),那么我想按产品估计价格系数。在 SAS 中,您可以通过将模型效果指定为 price*type 来轻松完成此操作。我怎样才能在 h2o 或 R 中做同样的事情?

有一个interactions() 函数,但它不能处理连续变量和分类变量之间的交互。有什么技巧可以解决这个问题?

非常感谢,

【问题讨论】:

查看 h2o.glm 函数的交互参数 Interactions() 在两者都是分类变量时效果很好,但在其中一个是连续变量(例如价格)时效果不佳。 是的,interactions() 仅适用于分类变量。感谢您澄清我的疏忽! 【参考方案1】:
set.seed(1234)
x1 = rnorm(100,0,1)
x2 = as.factor(rep(c("A","B","C","D"), each = 25))
y = as.factor(rep(0:1, each = 50))
data = data.frame(x1 = x1, x2 = x2, y = y)

可以在公式参数中使用“:”指定交互

# glm base example
fit <- glm(data = data, y ~ x1 + x2 + x1:x2, family = "binomial")
print(fit)

使用 h2o.glm 成对交互可以通过将列索引传递给交互参数来指定

# h2o.glm example
library("h2o")
h2o.init(nthreads = -1)
data.hex = as.h2o(data)
h2o_fit <- h2o.glm(x = 1:2, y = 3, training_frame = data.hex, family = "binomial", interactions = 1:2)
h2o_fit@model$coefficients_table
h2o.shutdown(prompt = F)

【讨论】:

彼得 - 感谢您的回复。您的示例分类变量中不是 x1 和 x2 吗?当两者都是分类变量时,Interactions() 效果很好,但当其中一个变量是连续变量(例如价格)时,则效果不佳。

以上是关于通过分类变量级别估计 h2o glm 系数的主要内容,如果未能解决你的问题,请参考以下文章

H2O 不应该标准化正则化 GLM 模型(套索、岭、弹性网)的分类预测变量吗?

H2O randomForest中的多类分类

在 R [重复] 中更改 glm 中的分类预测变量的级别

变量的顺序改变了 glmnet 中的估计系数

求教求教!广义估计方程因变量是连续性变量时为啥也可以算出来OR值啊?

R语言glm拟合logistic回归模型实战:基于glm构建逻辑回归模型及模型系数统计显著性分析每个预测因子对响应变量的贡献