glm;原始目标的日志 link 与记录目标的身份 link

glm; log link of the original target vs identity link of logged target

也许这是一个非常基本的问题,但为什么结果不同? FACE 是一些数值,logFACE 是 log(FACE)。我很困惑为什么系数会不同,甚至其中一些的方向。

f1 <- as.formula(paste("FACE ~", paste(col.selection, collapse = "+")))
glm1 <-  glm(formula = f1, data = df.train, family = gaussian(link = "log"))
par(mfrow=c(2,2))
plot(glm1)


f2 <- as.formula(paste("logFACE ~", paste(col.selection, collapse = "+")))
glm2 <- glm(formula = f2, data = df.train, family = gaussian(link = "identity"))
par(mfrow=c(2,2))
plot(glm2)

summary(glm1)
summary(glm2)

glm1 的情节

glm2 的情节

> coefficients(glm1)
(Intercept)      GENDER         AGE     MARSTAT   EDUCATION       NUMHH   logINCOME  logCHARITY     AGEdiff 
 5.71033133  2.28651820  0.01928597 -1.07200187  0.05477547 -0.05567484 -0.13955743  0.77219423 -0.26585280 
> coefficients(glm2)
(Intercept)      GENDER         AGE     MARSTAT   EDUCATION       NUMHH   logINCOME  logCHARITY     AGEdiff 
 3.95245904  0.87686820 -0.01206955  0.02667678  0.18357079  0.24466946  0.35963195  0.11596153 -0.05240633 

当您按对数转换响应值时,预测值以对数形式显示,因此残差计算、拟合等都是在该比例下完成的。例如,我们在 mtcars:

中针对 am 回归 log(mpg)
fit = glm(log(mpg) ~ am, data=mtcars,family=gaussian())
summary(fit$fitted.values)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  2.817   2.817   2.817   2.958   3.163   3.163 

对于对数链接的 GLM gaussian,响应值 mpg 预计为 exp(a*am + b):

fit = glm(mpg ~ am, data=mtcars,family=gaussian(link="log"))
summary(fit$fitted.values)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  17.15   17.15   17.15   20.09   24.39   24.39

所以你的回答没有进行对数转换,因此残差和拟合是在这个尺度上完成的。

那么系数就不同了..