[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