将数字向量转换为标准单位向量的函数

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)

以上是关于将数字向量转换为标准单位向量的函数的主要内容,如果未能解决你的问题,请参考以下文章

将字符串中的逗号分隔数字转换为数字向量[重复]

如何将欧拉角转换为前、上、右向量

将用户输入数字转换为整数向量(C ++)

如何将 NumPy 数组标准化为单位向量?

如何将 NumPy 数组标准化为单位向量?

将方向向量转换为四元数旋转