R 什么';s scale()的值范围?
我试图找出任何尺度的值之间的值的范围 我有一个47*2的数据帧,其值如下:R 什么';s scale()的值范围?,r,scale,R,Scale,我试图找出任何尺度的值之间的值的范围 我有一个47*2的数据帧,其值如下: 43109 43026 43857 42904 43753 43714 我在这个函数上运行scale()。我试图找出值的范围的界限。这是固定的,还是随输入而变化 我认为这些值应该在最接近的值之间进行标准化,对吗 对不起,我的问题是noob。scale()的文档让我感到困惑。默认情况下,scale减去平均值,然后除以标准偏差x。因此,没有固定的最小值/最大值。表示(只要数据的分布具有有限的平均值和有限的非零方差,1-
43109 43026
43857 42904
43753 43714
我在这个函数上运行scale()。我试图找出值的范围的界限。这是固定的,还是随输入而变化
我认为这些值应该在最接近的值之间进行标准化,对吗
对不起,我的问题是noob。scale()的文档让我感到困惑。默认情况下,
scale
减去平均值,然后除以标准偏差x
。因此,没有固定的最小值/最大值。表示(只要数据的分布具有有限的平均值和有限的非零方差,1-1/k^2
值的比例预计在k
平均值的标准偏差范围内,因此对于缩放数据,1-1/k^2
值的绝对值通常小于k
由于您有大约100个值,除了1个(99%)之外,其他所有值都可能有绝对值您是指默认设置? 这将是:
scale(x, center = TRUE, scale = TRUE)
此处是文档中默认设置的相关信息(为您标记的重要零件,删除的不相关零件):
如果中心为真,则通过从相应的列中减去列表示x的(省略NAs),来进行居中,如果中心为假,则不进行居中
scale的值确定如何执行列缩放(居中后)。如果scale为TRUE,则通过将x的(居中)列除以它们的标准偏差来进行缩放
这样你可以看得更清楚
# read in example data for you
aaa <- c(43109,43026, 43857,42904,43753, 43714)
# Get the results for scale
scale(aaa)
这基本上只是第一步
[,1]
[1,] -284.8333
[2,] -367.8333
[3,] 463.1667
[4,] -489.8333
[5,] 359.1667
[6,] 320.1667
attr(,"scaled:center")
[1] 43393.83
这些是我选择的数据的第一步(居中)的结果(
431094302643857429044375343714
)。您可以看到,43393.83
是列的平均值。行是各自的值减去列的平均值。例如,对于第一个值43109-43393.83=-284.8333
,等等,对于其他行,使用默认参数
如果“缩放”为真,则通过将x的(居中)列除以它们的标准偏差(如果“居中”为真)来进行缩放
这意味着如果Y是矩阵中一列的向量,在scale()
之后,该列将被(Y-平均值(Y))/sd(Y)
替换。您可以验证这一点:
mat_scaled1 <- scale(mat)
colmeans <- colMeans(mat)
colsds <- matrixStats::colSds(mat)
mat_scaled2 <- matrix(NA_real_, nrow=20, ncol=20)
for(i in seq_len(ncol(mat))){
mat_scaled2[,i] <- (mat[,i] - colmeans[i])/colsds[i]
}
all.equal(mat_scaled1, mat_scaled2,check.attributes = FALSE)
#> [1] TRUE
mat_scaled1
mat_scaled1 <- scale(mat)
colmeans <- colMeans(mat)
colsds <- matrixStats::colSds(mat)
mat_scaled2 <- matrix(NA_real_, nrow=20, ncol=20)
for(i in seq_len(ncol(mat))){
mat_scaled2[,i] <- (mat[,i] - colmeans[i])/colsds[i]
}
all.equal(mat_scaled1, mat_scaled2,check.attributes = FALSE)
#> [1] TRUE
mat_scaled_max <- scale(mat, center = FALSE, scale = matrixStats::colMaxs(mat))
max(mat_scaled_max)
#> [1] 1