我有一个使用scale()中心的解释变量,用于预测一个响应变量:
d <- data.frame( x=runif(100),y=rnorm(100) ) d <- within(d,s.x <- scale(x)) m1 <- lm(y~s.x,data=d)
我想绘制预测值,但使用x的原始比例,而不是中心的比例。有没有办法排序反向转换或反向尺度s.x?
谢谢!
解决方法
看一眼:
attributes(d$s.x) d$s.x * attr(d$s.x,'scaled:scale') + attr(d$s.x,'scaled:center')
例如:
> x <- 1:10 > s.x <- scale(x) > s.x [,1] [1,] -1.4863011 [2,] -1.1560120 [3,] -0.8257228 [4,] -0.4954337 [5,] -0.1651446 [6,] 0.1651446 [7,] 0.4954337 [8,] 0.8257228 [9,] 1.1560120 [10,] 1.4863011 attr(,"scaled:center") [1] 5.5 attr(,"scaled:scale") [1] 3.02765 > s.x * attr(s.x,'scaled:scale') + attr(s.x,'scaled:center') [,] 1 [2,] 2 [3,] 3 [4,] 4 [5,] 5 [6,] 6 [7,] 7 [8,] 8 [9,] 9 [10,] 10 attr(,"scaled:scale") [1] 3.02765