[R] question about scale() function

Domenico Vistocco vistocco at unicas.it
Fri Jan 4 08:45:10 CET 2008


tom soyer wrote:
> oops, it should be: rms=(sum((x-mean(x))^2)/(length(x)-1))^(1/2)
>   
sd(x) does the same thing.

domenico
> On 1/3/08, tom soyer <tom.soyer at gmail.com> wrote:
>   
>> Thanks Jim. Yes it does... but I calculated the root mean square (rms),
>> and couldn't reproduce the result without multiplying the rms by 2. I don't
>> know why...
>>
>>  > x=c(2,4,3,4,5)
>>     
>>> mean(x)
>>>       
>> [1] 3.6
>>     
>>> x-mean(x)
>>>       
>> [1] -1.6  0.4 -0.6  0.4  1.4
>>     
>>> scale(x)
>>>       
>>            [,1]
>> [1,] -1.4032928
>> [2,]  0.3508232
>> [3,] -0.5262348
>> [4,]  0.3508232
>> [5,]  1.2278812
>> attr(,"scaled:center")
>> [1] 3.6
>> attr(,"scaled:scale")
>> [1] 1.140175
>>     
>>> rms=sum((x-mean(x))^2)^(1/2)/(length(x)-1)
>>> rms
>>>       
>> [1] 0.5700877
>>     
>>> (x-mean(x))/rms
>>>       
>> [1] -2.8065857  0.7016464 -1.0524696  0.7016464  2.4557625
>>     
>>> (x-mean(x))/(rms*2)
>>>       
>> [1] -1.4032928  0.3508232 -0.5262348  0.3508232  1.2278812
>>
>>
>>  On 1/3/08, jim holtman <jholtman at gmail.com> wrote:
>>     
>>> Does this give you what you want?
>>>
>>>       
>>>> x=c(2,4,3,4,5)
>>>> ?scale
>>>> scale(x,scale=FALSE)
>>>>         
>>>     [,1]
>>> [1,] -1.6
>>> [2,]  0.4
>>> [3,] -0.6
>>> [4,]  0.4
>>> [5,]  1.4
>>> attr(,"scaled:center")
>>> [1] 3.6
>>>       
>>> Default is to performance scaling: "If scale is TRUE then scaling is
>>> done by dividing the (centered) columns of x by their
>>> root-mean-square, and if scale is FALSE, no scaling is done. "
>>>
>>> On Jan 3, 2008 9:37 PM, tom soyer <tom.soyer at gmail.com> wrote:
>>>       
>>>> Hi,
>>>>
>>>> The documentation for scale() states:"If center is TRUE then centering
>>>>         
>>> is
>>>       
>>>> done by subtracting the column means (omitting NAs) of x from their
>>>> corresponding columns". But it seems that R is subtracting something
>>>>         
>>> else
>>>       
>>>> instead of the column mean:
>>>>
>>>>         
>>>>> x=c(2,4,3,4,5)
>>>>> mean(x)
>>>>>           
>>>> [1] 3.6
>>>>         
>>>>> x-mean(x)
>>>>>           
>>>> [1] -1.6  0.4 -0.6  0.4  1.4
>>>>         
>>>>> scale(x)
>>>>>           
>>>>           [,1]
>>>> [1,] -1.4032928
>>>> [2,]  0.3508232
>>>> [3,] -0.5262348
>>>> [4,]   0.3508232
>>>> [5,]  1.2278812
>>>> attr(,"scaled:center")
>>>> [1] 3.6
>>>> attr(,"scaled:scale")
>>>> [1] 1.140175
>>>>
>>>> Notice that -1.4 is not the same as -1.6, and 1.2 is not the same as
>>>>         
>>> 1.4,
>>>       
>>>> etc. Does anyone know what exactly is scale() doing if it is not
>>>>         
>>> subtracting
>>>       
>>>> the column mean? Thanks.
>>>>
>>>> --
>>>> Tom
>>>>
>>>>        [[alternative HTML version deleted]]
>>>>
>>>> ______________________________________________
>>>> R-help at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide
>>>>         
>>> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
>>>       
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>>
>>>>         
>>>
>>> --
>>> Jim Holtman
>>> Cincinnati, OH
>>> +1 513 646 9390
>>>
>>> What is the problem you are trying to solve?
>>>
>>>       
>>
>> --
>> Tom
>>     
>
>
>
>
>




More information about the R-help mailing list