Zbudowałem indeks kapitału społecznego za pomocą techniki PCA. Indeks ten zawiera wartości zarówno dodatnie, jak i ujemne. Chcę przekształcić / przekonwertować ten indeks na skalę 0-100, aby ułatwić interpretację. Proszę zasugerować mi najłatwiejszy sposób.
data-transformation
scales
Sohail Akram
źródło
źródło
Odpowiedzi:
Dowolna zmienna (rozkład jednoczynnikowa) z zaobserwowanym m i n o l d i m x O L d wartości (lub te mogą być ustawione potencjalnych granic dla wartości) mogą być przeskalowane w stosunku do zakresu m i n n e W celu m x n e w następującym wzorze:v m i no l d m a xo l d m i nn e w m a xn e w
lub
.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
źródło
Dla R dostępna jest również
rescale
funkcja z pakietu skal , która robi dokładnie to, co chcesz i co opisali @AndrewTulloch i @ttnphns:źródło
po pierwsze, uzyskajmy przykładowe dane:
Oto dwie funkcje, które będą działać w języku R.
Lub możesz użyć innych transformacji. Na przykład transformacja logit została wspomniana przez @ondrej
lub inne przekształcenia:
źródło
Wystarczy dodać do odpowiedzi ttnphnss, aby zaimplementować ten proces w Pythonie (na przykład), ta funkcja załatwi sprawę:
źródło
print rescale([-10, -9, -5, 2, 6])
# [0.0, 6.25, 31.25, 75.0, 100.0]
Sugeruję, aby nie wiązać indeksu z przedziałem 0-100, ponieważ nie poprawia to interpretacji, ale raczej utrudnia. Jeśli składniki indeksu mogą być ujemne, to możliwe, że indeks staje się ujemny i, moim zdaniem, lepiej odzwierciedla to, co dzieje się ze składnikami niż jakaś niska wartość w zakresie 0-100.
źródło
W przypadku R z załadowanymi pakietami standardowymi możesz po prostu użyć funkcji scale () z pakietu „podstawowego”:
użyj „as.vector ()”, aby pobrać skalowane x jako wektor.
źródło