R-回归变量变换函数

R-回归变量变换函数,r,function,dataframe,lm,R,Function,Dataframe,Lm,我在SAS中编写了一个宏,它实现了我想要的功能,但现在我想在R中得到一个函数,它也可以实现同样的功能 我想要一个函数,它可以以任何方式转换特定的预测变量,然后使用每个转换构建单独的回归模型,然后比较结果 例如,考虑下面的线性回归模型: lm(y ~ x1 x2,data=df) 我想用三种不同的方法对x1进行变换,取对数,取平方,取其.5的幂,然后建立三次回归方程,每次变换一次,然后比较结果 有没有可以构建的功能,或者其他可以为我实现这一点的功能 谢谢。此功能可能需要改进。向@thelatem

我在SAS中编写了一个宏,它实现了我想要的功能,但现在我想在R中得到一个函数,它也可以实现同样的功能

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

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

lm(y ~ x1 x2,data=df)
我想用三种不同的方法对x1进行变换,取对数,取平方,取其.5的幂,然后建立三次回归方程,每次变换一次,然后比较结果

有没有可以构建的功能,或者其他可以为我实现这一点的功能


谢谢。

此功能可能需要改进。向@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)
获取更详细的摘要


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

此功能可能需要改进。向@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)
获取更详细的摘要


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

类似于:
lappy(c(log,sqrt),函数(f)lm(y~f(x),data=df))
应该这样做。如果有人想在这方面展开讨论,那就去做吧。类似这样的事情:
lappy(c(log,sqrt),function(f)lm(y~f(x),data=df))
应该可以做到。如果有人想对此进行扩展,那就去做吧。将
x^p
替换为
poly(x,p)
——数值更稳定,我觉得这太棒了。我试图修改我的回归模型,它有76个变量。我试图告诉它转换变量,然后使用所有可用变量执行回归。不过我有一个错误。(
lm.3Trans=function(y,x1,transformations=c(log,sqrt,pwer)){pwer=function(x,p=2)poly(x,p)res=lappy(transformations,function(f)x1我能问几个细节吗?你想把这3个变换只应用到回归中的一个预测值上吗?还是你想把它应用到每个预测值上?@SamPassmore我只想把它应用到一个预测值上。这样我就可以看到哪一个变换只对单个预测值产生了最好的结果。替换
x^p
poly(x,p)
--数值上更稳定我,这太棒了。我正试图修改我的回归模型,它有76个变量。我试图告诉它转换变量,然后使用所有可用的变量执行回归。但我得到了一个错误。(
lm.3Trans=函数(y,x1,变换=c(log,sqrt,pwer)){pwer=function(x,p=2)poly(x,p)res=lappy(变换,函数(f)x1我能问几个细节吗?你想把这3个变换只应用于回归中的一个预测值吗?还是你想把它应用于每个预测值?@SamPassmore我只想把它应用于一个预测值。这样我就可以看到哪一个变换只对单个预测值产生了最好的结果。