我使用 PCA 技术构建了一个社会资本指数。该指数包括正值和负值。我想将此索引转换/转换为 0-100 比例以使其易于解释。请建议我一个最简单的方法。
将变量的比例更改为 0-100
机器算法验证
数据转换
秤
2022-01-29 20:07:57
4个回答
任何具有观察到和值(或者这些可以是值的预设潜在界限)的变量(单变量分布)都可以通过以下公式到
或者
。
对于 R,还有scalesrescale
包中的可用功能,它完全符合您的要求以及@AndrewTulloch 和@ttnphns 所描述的功能:
library(scales)
rescale(c(-10, -9, -5, 2, 6), to = c(0, 100)) ## Use scales:::rescale() if you have several packages loaded using the same function name
[1] 0.00 6.25 31.25 75.00 100.00
首先,让我们获取一些示例数据:
x <- runif(20, -10, 10)
这里有两个可以在 R 中工作的函数
rescale <- function(x) (x-min(x))/(max(x) - min(x)) * 100
rescale(x)
或者,您可以使用其他转换。例如,@ondrej 提到了 logit 变换
plogis(x)*100
或者,其他转换:
pnorm(x)*100
pnorm(x, 0, 100) * 100
punif(x, min(x), max(x))*100
只是为了添加到 ttnphnss 的答案,在 Python 中实现这个过程(例如),这个函数可以解决问题:
from __future__ import division
def rescale(values, new_min = 0, new_max = 100):
output = []
old_min, old_max = min(values), max(values)
for v in values:
new_v = (new_max - new_min) / (old_max - old_min) * (v - old_min) + new_min
output.append(new_v)
return output
print rescale([1, 2, 3, 4, 5])
# [0.0, 25.0, 50.0, 75.0, 100.0]
其它你可能感兴趣的问题