[R] Backtransforming regression coefficient for scaled covariate

Andres Legarra alegarra at neiker.net
Mon Sep 12 11:09:49 CEST 2005


RE: [R] Backtransforming regression coefficient for scaled covariateYep it
is the the same.
Scaling  does both dividing and centering (this is the reason intercept
changes) and scaling is not with sd but with sum of squares divided by n-1;
so, it is not s.d. because average is not substracted
But the appropriate parameters are returned by scale()in form of attributes
(quite awful to extract)

x=1:100
a=rnorm(100)*200+x+.5*x^2+100
lm1=lm(formula= a ~ x + I(x^2))
Coefficients:
(Intercept)            x       I(x^2)
     96.463       -1.062        0.528

 lm2=lm(formula= a ~ scale(x,center=F) + scale(I(x^2),center=F) )
lm2$coeff
              (Intercept)      scale(x, center = F) scale(I(x^2), center =
F)
                 96.46283                 -62.07923
2403.00364

 lm2$coeff[2]/attributes(scale(x,center=F))$"scaled:scale"
scale(x, center = F)
           -1.061893

 lm2$coeff[3]/attributes(scale(x^2,center=F))$"scaled:scale"
scale(I(x^2), center = F)
                0.5280315

If you use the default center=T, then you also have to consider the means of
x and x^2 which are involved in the intercept.
I find this scale() a bit complicated. I never used it and perhaps I've read
the doc too fast

Regards
Andres

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

----- Original Message ----- 
From: Gorjanc Gregor
To: Andrés Legarra ; r-help at stat.math.ethz.ch
Sent: Monday, September 12, 2005 10:12 AM
Subject: RE: [R] Backtransforming regression coefficient for scaled
covariate


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