R语言中 scale函数用法

scale() 函数

1. 用法
scale(x, center = TRUE, scale = TRUE) 
# x 是样本数据 (r语言中定义为 数字矩阵)
# center  中心化(这里指的是减去样本数据x的平均值)
# scale   标准化 (这里指的是除以样本数据x的方差或者均方根)

备注: 之前一直听别人说scale(标准化)是除以什么根方差 ,不太懂,所以自己就验证了一下。
结论1: 在同时使用center =T 和 scale =T 的情况下,scale用的值是方差
结论2: 在只使用center =F 和 scale =T, scale用的值是根方差

 # 根方差的计算
 sqrt(sum(x^2)/(n-1)) # x是数据样本, n 是数据样本的数量
2.举列

只中心化,不标准化的验证:

attach(mtcars)
a = mtcars[1:5,]$gear    # 以r语言中内置的mtcars为例子 
> a
[1] 4 4 4 3 3
> mean(a)   # 求平均值
[1] 3.6
> sd(a)     # 求方差
[1] 0.5477226
> scale(a,center = T,scale = F)    # 只中心化,不标准化
     [,1]
[1,]  0.4
[2,]  0.4
[3,]  0.4
[4,] -0.6
[5,] -0.6
attr(,"scaled:center")
[1] 3.6
> a - mean(a)        # 只中心化验证
[1]  0.4  0.4  0.4 -0.6 -0.6     

只标准化, 不中心化的验证:

> scale(a,center = F,scale = T)    # 只标准化, 不中心化
          [,1]
[1,] 0.9847319
[2,] 0.9847319
[3,] 0.9847319
[4,] 0.7385489
[5,] 0.7385489
attr(,"scaled:scale")
[1] 4.062019
# 这里的scale值是4.062019,而方差是0.5477226,所以不是除以方差,而是根方差
> a/4.062019
[1] 0.984732 0.984732 0.984732 0.738549 0.738549

# 根方差的计算
> scale_num = sqrt(sum(a^2)/(length(a)-1))
> scale_num
[1] 4.062019

既标准化,也中心化的验证:

> scale(a,center = T,scale = T)    # 既标准化,也中心化
           [,1]
[1,]  0.7302967
[2,]  0.7302967
[3,]  0.7302967
[4,] -1.0954451
[5,] -1.0954451
attr(,"scaled:center")
[1] 3.6
attr(,"scaled:scale")
[1] 0.5477226

> (a - mean(a))/sd(a)
[1]  0.7302967  0.7302967  0.7302967 -1.0954451 -1.0954451
  • 12
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值