# Re: [R] Backtransforming regression coefficient for scaled covariate

From: Andres Legarra <alegarra_at_neiker.net>
Date: Mon 12 Sep 2005 - 19:09:49 EST

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/attributes(scale(x,center=F))\$"scaled:scale" scale(x, center = F)

-1.061893

lm2\$coeff/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@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)/sd(x^2)
I(scale(x)^2)
-0.0020519
R> coef(lm2)/sd(x)
scale(x)
1.0384
-----Original Message-----
From: Andres Legarra [mailto:alegarra@neiker.net]
Sent: Mon 2005-09-12 08:53
To: Gorjanc Gregor; r-help@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)/sd(x^2)
Andres
--
Andres Legarra
NEIKER
Apdo. 46
Vitoria-Gasteiz 01080 Spain
--

----- Original Message -----
From: Gorjanc Gregor
To: r-help@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) / 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@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help