PCA 기술을 사용하여 소셜 자본 지수를 구성했습니다. 이 지수는 양수와 음수 값으로 구성됩니다. 해석하기 쉽도록이 인덱스를 0-100 스케일로 변환 / 변환하고 싶습니다. 가장 쉬운 방법을 제안하십시오.
PCA 기술을 사용하여 소셜 자본 지수를 구성했습니다. 이 지수는 양수와 음수 값으로 구성됩니다. 해석하기 쉽도록이 인덱스를 0-100 스케일로 변환 / 변환하고 싶습니다. 가장 쉬운 방법을 제안하십시오.
답변:
먼저 몇 가지 예제 데이터를 얻습니다.
x <- runif(20, -10, 10)
다음은 R에서 작동하는 두 가지 기능입니다.
rescale <- function(x) (x-min(x))/(max(x) - min(x)) * 100
rescale(x)
또는 다른 변환을 사용할 수 있습니다. 예를 들어, 로짓 변환은 @ondrej에 의해 언급되었습니다.
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]
print rescale([-10, -9, -5, 2, 6])
# [0.0, 6.25, 31.25, 75.0, 100.0]
표준 패키지가로드 된 R의 경우 'base'패키지에서 scale ()을 사용할 수 있습니다.
x=c(2,4,8,16)
x.scaled = scale(x,FALSE,max(x)) # divide each value in x by max(x)
x.scaled = as.vector(x.scaled)
'as.vector ()'를 사용하여 스케일 된 x를 벡터로 검색하십시오.