如何查看哪种转换是最好的

数据挖掘 回归
2022-03-10 17:44:33

在 RI 中data,我想进行回归分析,找到一个可以拟合数据的函数。所以head(data)

promotion   new_users
39.5              100
36.1               79
 0.0               18

为了找到拟合数据的最佳回归函数,我绘制了回归模型的残差,以查看残差是否系统地接近零线。但我不知道哪种转换是最好的转换。在这里,我尝试进行线性变换、sqrt变换,最后是对数变换。

lm.linear = lm(formula= data$new_users ~ data$promotion )
plot(resid(lm.linear), col="blue")

在此处输入图像描述

lm.sqrt = lm(formula= data$new_users ~ sqrt(data$promotion) )
plot(resid(lm.sqrt), col="blue")

在此处输入图像描述

lm.log = lm(formula= data$new_users ~ log(0.1+data$promotion ))
plot(resid(lm.log), col="blue")

在此处输入图像描述

如果我只是简单地绘制数据和拟合回归函数,我看不出哪个回归函数最适合数据,因为它们非常相似。哪种转换是最好的,还有另一种方法可以找出最好的转换吗?

谢谢。

要查看是否可以使用泊松回归模型,我键入

model=glm(data$new_users ~data$promotion, familiy="poisson", data=data)

我使用拟合优度来查看模型是否合适。

with(m1, cbind(res.deviance = deviance, df = df.residual,
  p = pchisq(deviance, df.residual, lower.tail=FALSE)))

我得到一个低 p 值意味着该模型非常适合?

此外,假设我们想要比较两个毒回归模型(一个data来自另一个数据集的 poission regr. model 和另一个来自另一个数据集的模型data_new),看看两者之间是否存在显着差异,如何做到这一点?我认为可以使用 anova 测试来解决这个问题。

3个回答

如果您的因变量是离散的,您应该使用glm模型poisson您可以使用lm,但显然违反了假设。

参见示例:https ://stats.idre.ucla.edu/r/dae/poisson-regression/

人们通常转换数据的主要原因有两个。要么帮助满足假设,要么帮助提高预测性能

  1. 帮助满足假设 在线性回归的情况下,您必须满足几个假设,包括线性和残差等具有恒定方差并且看起来彼此独立的假设。转换您的响应有助于使您的关系更加线性并有助于您的残差假设,而对您的预测变量的转换主要有助于这些残差。通常,如果您在进行推理,则需要正态残差(或用于 CLT 的大样本量),您可以使用 qq-plot 或正态性检验对其进行评估,但如果您正在进行预测,则不必担心对这个。尝试一些流行的变换(sqrt、square、log)是一个好主意,Box-Cox 变换(在预测变量上)也是如此,它基本上找到了一个使残差的正态似然函数最大化的变换。
  2. 提高预测能力 这更像是一个开放的游戏,我会警惕过度拟合。查看最有效的方法并使用它(可能很难,如果您的数据不太大,可能必须进行交叉验证)。
  3. 你的案例 通常你的x轴是拟合值(你可以绘制一个glm对象,不确定lm,所以运行大多数基本诊断图)。仅使用这些图也很难评估正态性,这通常使用 qq 图或残差直方图来完成。看起来您的响应变量 new_users 是一个计数;也许泊松模型将是另一种选择。“最佳”转换是一种可以帮助您满足 (1) 中所述假设的转换,它更多的是找到使您最有信心满足您的假设的转换。如果您希望提高性能,R2将有助于指示有用的转换,但再次警惕过度拟合。电源转换,例如(x1/3),log(x+0.1),x2通常是一条不错的路线。

最好的转换通常是一个主观的决定。因此,您需要对原因做出合理的解释来制定自己的选择。在我看来,对数转换似乎导致了最强的相关性。