[R] Backtransforming regression coefficient for scaled covariate

Gorjanc Gregor Gregor.Gorjanc at bfro.uni-lj.si
Mon Sep 12 10:12:23 CEST 2005


Andres, this seems not to be the case. Look bellow 
the coefficients. They are not the same as in unscaled
regression.

R> (lm1 <- lm(y ~ x + I(x^2)))

Call:
lm(formula = y ~ x + I(x^2))

Coefficients:
(Intercept)            x       I(x^2)  
    4.62069      1.78811     -0.00751  

R> ## Fit regression with transformed i.e. standardized covariate
R> (lm2 <- lm(y ~ scale(x) + I(scale(x)^2)))

Call:
lm(formula = y ~ scale(x) + I(scale(x)^2))

Coefficients:
  (Intercept)       scale(x)  I(scale(x)^2)  
        75.12          29.86          -6.21  

R> coef(lm2)[3]/sd(x^2)
I(scale(x)^2) 
   -0.0020519 

R> coef(lm2)[2]/sd(x)
scale(x) 
  1.0384 

-----Original Message-----
From: Andres Legarra [mailto:alegarra at neiker.net]
Sent: Mon 2005-09-12 08:53
To: Gorjanc Gregor; r-help at stat.math.ethz.ch
Subject: Re: [R] Backtransforming regression coefficient for scaled covariate
 
[R] Backtransforming regression coefficient for scaled covariate

Your
covariate in the second part of the polynomial is x^2 and not x. Therefore
the transformation should be applied to x^2.
Like this:
(lm2 <- lm(y ~ scale(x) + I(scale(x^2)) )
then you would use
coef(lm2)[3]/sd(x^2)

Andres
--
Andres Legarra 
NEIKER
Apdo. 46 
Vitoria-Gasteiz 01080 Spain
--



----- Original Message ----- 
From: Gorjanc Gregor
To: r-help at stat.math.ethz.ch
Sent: Sunday, September 11, 2005 10:25 PM
Subject: [R] Backtransforming regression coefficient for scaled covariate


Hello!
Scaling i.e. (x - mean(x)) / sd(x) of covariates in the model
can improve the efficiency of estimation. That is nice, but
sometimes one needs to report estimates for original scale. I
was able to backtransform estimates of linear regression quite
easily but I stumped on higher polynomials. Is there a general
rule that I am not aware of or is my algebra so bad?
I appologize for not pure R question but I hope others will also
benefit. I attached the R code for example bellow.
## --- Generate data for linear regression --- 
e <- rnorm(n = 100, sd = 10)
x <- rnorm(n = 100, mean = 100, sd = 10)
b <- 3
mu <- 2
y <- mu + b * x + e
plot(y = y, x = x)
## Fit linear regression
(lm1 <- lm(y ~ x))
## Fit linear regression with transformed i.e. standardized covariate
(lm2 <- lm(y ~ scale(x)))
## Backtransform estimate of regression coefficient
coef(lm2)[2] / sd(x)
## --- Generate data for quadratic regression --- 
e <- rnorm(n = 100, sd = 10)
x <- runif(n = 100, min = 1, max = 100)
b1 <- 2
b2 <- -0.01
mu <- 2
y <- mu + b1 * x + b2 * x^2 + e
plot(y = y, x = x)
## Fit regression
(lm1 <- lm(y ~ x + I(x^2)))
## Fit regression with transformed i.e. standardized covariate
(lm2 <- lm(y ~ scale(x) + I(scale(x)^2)))
## Backtransform estimates of regression coefficients
## ??
Lep pozdrav / With regards,
    Gregor Gorjanc
---------------------------------------------------------------------- 
University of Ljubljana
Biotechnical Faculty        URI: http://www.bfro.uni-lj.si/MR/ggorjan
Zootechnical Department     mail: gregor.gorjanc <at> bfro.uni-lj.si
Groblje 3                   tel: +386 (0)1 72 17 861
SI-1230 Domzale             fax: +386 (0)1 72 17 888
Slovenia, Europe
---------------------------------------------------------------------- 
"One must learn by doing the thing; for though you think you know it,
 you have no certainty until you try." Sophocles ~ 450 B.C.
______________________________________________
R-help at stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html




More information about the R-help mailing list