Eu construí um índice de capital social usando a técnica PCA. Este índice compreende valores positivos e negativos. Desejo transformar / converter esse índice em uma escala de 0 a 100 para facilitar a interpretação. Sugira-me uma maneira mais fácil de fazer isso.
data-transformation
scales
Sohail Akram
fonte
fonte
Respostas:
Qualquer variável (distribuição univariada) com observada m i n o l d e m um x o l d valores (ou estes podem ser pré-ajustados potenciais limites para os valores) pode ser adaptada a gama m i n n e w a m um x n e w pela seguinte fórmula:v m i no l d m a xo l d m i nne w m umxn e w
ou
.m a xn e w- m i nn e wm a xo l d-m i no l d⋅ ( v - m i no l d) + m i nn e w
fonte
Para R, também já existe uma
rescale
função disponível no pacote de escalas , que faz exatamente o que você deseja e o que @AndrewTulloch e @ttnphns descrevem:fonte
primeiro, vamos obter alguns dados de exemplo:
Aqui estão duas funções que funcionarão em R
Ou você pode usar outras transformações. Por exemplo, a transformação logit foi mencionada por @ondrej
ou, outras transformações:
fonte
Apenas para adicionar à resposta do ttnphnss, implementar este processo no Python (por exemplo), esta função fará o seguinte:
fonte
print rescale([-10, -9, -5, 2, 6])
# [0.0, 6.25, 31.25, 75.0, 100.0]
Sugiro não vincular o índice ao intervalo de 0 a 100, pois isso não melhora a interpretação, mas torna mais difícil. Se os constituintes do índice puderem ser negativos, é possível que o índice se torne negativo e reflita o que está acontecendo com os constituintes melhor do que algum valor baixo no intervalo de 0 a 100, na minha opinião.
fonte
Para R com pacotes padrão carregados, você pode apenas usar scale () do pacote 'base':
use 'as.vector ()' para recuperar o x escalado como vetor.
fonte