【问题标题】:Function that converts a vector of numbers to a vector of standard units将数字向量转换为标准单位向量的函数
【发布时间】:2011-08-15 16:28:07
【问题描述】:

有没有一个函数,给定一个数字向量,返回另一个向量,每个值对应的标准单位?

其中标准单位:一个值是平均值的 + 或 - 多少个 SD

例子:

 x <- c(1,3,4,5,7)    # note: mean = 4, sd = 2
 foo(x) 
 [1]  -1.5  -0.5  0.0  0.5  1.5

这个虚构的“foo”函数是否已经包含在一个包中?

【问题讨论】:

  • 你的 sd=2 有点过时了... ;-)
  • 注意:在我的示例中,我使用的是完整人口的 SD (2),而不是样本 SD (2.23)。
  • 啊,那么你应该在你的 Q 中这么说,因为 scale() 的答案只有在你这样做时才有效:scale(x, center=4, scale=2)
  • @gavin:感谢您提供有用的说明。

标签: r normalization mean correlation standard-deviation


【解决方案1】:

是的,scale():

x <- c(1,3,4,5,7)
scale(x)

【讨论】:

    【解决方案2】:

    您要查找的函数是scale

    scale(x)
    
    
               [,1]
    [1,] -1.3416408
    [2,] -0.4472136
    [3,]  0.0000000
    [4,]  0.4472136
    [5,]  1.3416408
    attr(,"scaled:center")
    [1] 4
    attr(,"scaled:scale")
    [1] 2.236068
    

    请注意,答案与您在问题中发布的内容不同。原因是你的 x 中的标准差实际上是 2.23,而不是 2。

    sd(x)
    [1] 2.236068
    

    【讨论】:

      【解决方案3】:

      简单的(x-mean(x))/sd(x) 怎么样,还是我在这里遗漏了一些微妙之处?

      【讨论】:

      • 我意识到这是微不足道的;只是想知道它是否是包的一部分,因为获取此向量是计算相关性的最常见方法之一的中间步骤
      • 你为什么不直接使用cor()。此外,根据定义,相关性独立于线性变换,因此首先标准化两个变量没有区别。
      • 语法应该是:“(x - mean(x) ) / sd(x)” 空格很重要(我在控制台中搜索是这样的?x-mean)
      猜你喜欢
      • 2023-04-06
      • 2023-04-01
      • 1970-01-01
      • 2015-08-25
      • 2019-04-20
      • 2013-09-27
      • 2016-07-10
      相关资源
      最近更新 更多