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[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@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@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)[3]/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)[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@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 ______________________________________________ R-help@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
Received on Mon Sep 12 19:14:38 2005

This archive was generated by hypermail 2.1.8 : Sun 23 Oct 2005 - 16:50:47 EST