约翰·福克斯(John Fox)的书《应用回归的R伴侣》是使用进行应用回归建模的出色资源R
。car
我在此答案中始终使用的软件包是随附的软件包。本书还作为网站带有其他章节。
转换响应(又名因变量,结果)
Box-Cox转换为选择响应的转换提供了一种可能的方式。配件包含未转换的变量与回归模型后R
功能lm
,您可以使用该功能boxCox
从car
包估计最大似然(即功率参数)。因为您的因变量并非严格为正,所以Box-Cox转换将不起作用,您必须指定使用Yeo-Johnson转换的选项(请参阅此处的原始文章和相关文章):λfamily="yjPower"
boxCox(my.regression.model, family="yjPower", plotit = TRUE)
这将产生如下图:
的最佳估计值是使轮廓像集最大化的值,在此示例中,该值约为0.2。通常,的估计值会四舍五入为仍在95%置信区间内的熟悉值,例如-1,-1 / 2、0、1 / 3、1 / 2、1或2。λλ
要立即改变你的因变量,使用函数yjPower
从car
包:
depvar.transformed <- yjPower(my.dependent.variable, lambda)
在函数中,lambda
应当是您在使用前找到的的四舍五入。然后,使用转换后的因变量再次拟合回归。λboxCox
重要提示:您不仅应该考虑对因变量进行日志转换,还应考虑使GLM具有日志链接。以下是一些提供更多信息的参考:第一,第二,第三。为此R
,请使用glm
:
glm.mod <- glm(y~x1+x2, family=gaussian(link="log"))
y
您的因变量在哪里x1
,x2
等等,是您的自变量。
预测变量的转换
严格正预测变量的转换可以通过因变量转换后的最大似然来估计。要做到这一点,使用函数boxTidwell
从car
包(原始文件见这里)。这样使用:boxTidwell(y~x1+x2, other.x=~x3+x4)
。这里重要的是,该选项other.x
指示不需转换的回归项。这就是您所有的分类变量。该函数产生以下形式的输出:
boxTidwell(prestige ~ income + education, other.x=~ type + poly(women, 2), data=Prestige)
Score Statistic p-value MLE of lambda
income -4.482406 0.0000074 -0.3476283
education 0.216991 0.8282154 1.2538274
在那种情况下,分数测试表明应该对变量income
进行转换。最大似然估计的是-0.348。可以将其四舍五入为-0.5,类似于转换。λincome
incomenew=1/incomeold−−−−−−−−√
关于自变量转换的网站上另一篇非常有趣的文章是这篇文章。
转型的劣势
尽管可以相对容易地解释对数转换的因变量和/或自变量,但是其他更复杂的转换的解释则不太直观(至少对我而言)。例如,在因变量被转换之后,您将如何解释回归系数?这个站点上有很多帖子正好解决了这个问题:第一,第二,第三,第四。如果直接使用Box-Cox中的而不进行四舍五入(例如 = -0.382),则解释回归系数会更加困难。1/y√λλ
建模非线性关系
分数多项式和样条曲线是两种非常适合非线性关系的灵活方法。这三篇论文很好地介绍了这两种方法:第一,第二和第三。还有一本关于分数多项式和的整本书R
。该R
程序包mfp
实现了多元分数多项式。此演示文稿可能与分数多项式有关。要拟合样条曲线,您可以使用包装或函数中的函数gam
(通用加性模型,请参见此处,获得出色的介绍R
)。mgcv
ns
包中的(自然三次样条)和bs
(三次B样条)splines
(请参见此处以了解这些功能的用法示例)。使用,gam
您可以使用样条s()
函数使用样条线指定要拟合的预测变量:
my.gam <- gam(y~s(x1) + x2, family=gaussian())
在这里,x1
将使用样条曲线进行x2
线性拟合,就像在正常的线性回归中一样。在内部,gam
您可以像中指定分发系列和链接功能glm
。所以,以适应日志链接功能的模型,你可以指定选项family=gaussian(link="log")
中gam
为glm
。
看一下这个网站上的帖子。