将数字向量转换为标准单位向量的函数
Posted
技术标签:
【中文标题】将数字向量转换为标准单位向量的函数【英文标题】: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:感谢您提供有用的说明。
【参考方案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)以上是关于将数字向量转换为标准单位向量的函数的主要内容,如果未能解决你的问题,请参考以下文章