【问题标题】:R - Regression Variable Transformation FunctionR - 回归变量转换函数
【发布时间】:2015-05-29 23:00:08
【问题描述】:

我在 SAS 中编写了一个宏来做我想要的,但现在我想在 R 中获得一个做同样事情的函数。

我想要一个函数,它可以以多种方式转换特定的预测变量,然后使用每种转换构建单独的回归模型,然后比较结果。

例如,考虑以下线性回归模型:

lm(y ~ x1 x2,data=df)

我想用三种不同的方式变换 x1,取对数,取平方,取 0.5 次方,然后建立回归方程 3 次,每次变换一次,然后比较结果。

是否有可以构建的功能,或其他可以为我做这件事的功能?

谢谢。

【问题讨论】:

  • 类似:lapply(c(log,sqrt), function(f) lm(y ~ f(x), data=df) ) 应该这样做。如果有人想对此进行扩展,那就去吧。

标签: r function dataframe lm


【解决方案1】:

这个功能可能会被改进。向@thelatemail 致敬。

lm.3Trans = function(y, x1, x2, transformations = c(log,sqrt,pwer)){
  pwer = function(x, p = 2) poly(x,p)
  res = lapply(transformations, function(f) lm(y ~ f(x1) + x2))
  res
}

这会将您的模型输出到一个列表中,然后您可以对其执行以下操作:

lapply(lm.3Trans(y,x,x1), summary)

获取更详细的摘要

也许值得扩展这个函数来获取一个公式,也许还有另一个争论来确定应该转换哪个预测变量。请让我知道这是否有用。

【讨论】:

  • poly(x,p) 替换x^p -- 数值更稳定
  • 山姆,这太棒了。我正在尝试为我的回归模型修改这个,它有 76 个变量。这是我试图告诉它转换变量,然后使用所有可用变量执行回归。我得到了一个错误。 (lm.3Trans = function(y, x1, transformations = c(log,sqrt,pwer)){ pwer = function(x, p = 2) poly(x,p) res = lapply(transformations, function(f) x1 <- f(x1), lm(y ~ .,data=train[,2:77])) res } lapply(lm.3Trans(revenue,P1), summary)) @SamPassmore
  • 我可以问一些细节吗?您想将 3 个转换仅应用于回归中的单个预测变量吗?还是要将其应用于每个预测器?
  • @SamPassmore 我只想将它应用于单个预测器。这样我就可以看到单个预测变量的哪个转换产生了最好的结果。
猜你喜欢
  • 2023-03-18
  • 2023-03-25
  • 1970-01-01
  • 2015-03-30
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
  • 2013-04-09
  • 2018-01-20
相关资源
最近更新 更多