标准化线性模型中的二次变量

机器算法验证 r 回归 线性模型 标准化
2022-03-25 05:31:44

我有一个关于标准化的基本问题:

说,我有预测向量aba是温度和b降雨量),所以它们的比例不同。

我想y使用 和 的线性和二次函数a进行回归b我可以这样做:

Method 1:

lm(y ~ a + I(a^2) + b + I(b^2)) 

Method 2:

a2<-a^2
b2<-b^2 
lm(y ~ a + a2 + b + b2)

但是在运行我的模型之前,我想进行标准化ab以便它们的效果大小可以比较。那么以下两种方法中哪一种是正确的:

Method 1:

z.a<-scale(a, scale = T, center = T)
z.b<-scale(b, scale = T, center = T)
lm(y ~ z.a + I(z.a^2) + z.b + I(z.b^2))

或者

Method 2:
a2<- a^2
b2<- b^2
z.a<-scale(a, scale = T, center = T)
z.a2<-scale(a2, scale = T, center = T)
z.b<-scale(b, scale = T, center = T)
z.b2<-scale(b2, scale = T, center = T)

lm(y ~ z.a + z.a2 + z.b + z.b2)    
3个回答

我只是在看同一个问题,并做了一些简单的模拟来使用泊松 glm 得到答案。事实证明,这两种方法都做出了与使用非标准化变量完全相同的预测。不同之处在于方法 2(反映在下面代码中的“mod1”中)为两个变量提供与非标准化模型(下面的“mod”)完全相同的 z 分数和 p 值,而方法 1(反映在“mod2”中" 下面)估计变量 1 不显着,而二次项显着。

这是R中的模拟代码:

# ----------------------------------
n.site <- 200
vege <- sort(runif(n.site, 0, 1))

alpha.lam <- 2
beta1.lam <- 2
beta2.lam <- -2
lam <- exp(alpha.lam + beta1.lam*vege + beta2.lam*(vege^2))
N <- rpois(n.site, lam)

plot(vege, lam)

z.veg <- scale(vege)
z.veg2 <- scale(vege^2)
z.vege2.1 <- z.veg^2

mod <- glm(N ~ vege + I(vege^2), family = poisson)
a <- predict(mod, data = vege)

mod1 <- glm(N ~ z.veg + z.veg2, family = poisson)
b <- predict(mod1, data = c(z.veg, z.veg2))

mod2 <- glm(N ~ z.veg + z.vege2.1, family = poisson)
c <- predict(mod2, data = c(z.veg, z.vege2.1))

summary(mod)
summary(mod1)
summary(mod2)

par(mfrow=c(2, 2))
plot(vege, lam)
plot(vege, a)
plot(vege, b)
plot(vege, c)
# ----------------------------------

Neerajs 和 Andrews 的一个附加组件回答:

如果您考虑线性项和平方项之间的相关性,您会看到方法 2(先平方然后缩放)产生与原始变量相同的相关性。另一方面,方法 1 创建了更多的正交变量:

vege <- sort(runif(200, 0, 1))

veg2<-vege^2
z.veg <- scale(vege)
z.veg2 <- scale(veg2)
z.vege2.1 <- z.veg^2

#original variables
cor(veg2,vege) #highly correlated e.g. 0.97

#method 2
cor(z.veg2,z.veg) #highly correlated e.g. 0.97

#method 1
cor(z.vege2.1,z.veg) #much less correlated e.g. -0.13

因此,消除了多重回归中的共线性,这可能值得考虑。但我仍然很想听听专家的意见

我更喜欢第一种方法。在这里,您首先对数据本身进行了归一化,然后再在方程中采用线性/二次项。

标准化意味着数据(预测器)将它们带入相同的规模。

它与任何术语无关。您也可以根据需要在方程式中使用三次/二次项。