Saya telah membangun indeks modal sosial menggunakan teknik PCA. Indeks ini terdiri dari nilai-nilai positif dan negatif. Saya ingin mengubah / mengonversi indeks ini ke skala 0-100 agar mudah ditafsirkan. Tolong sarankan saya cara termudah untuk melakukannya.
data-transformation
scales
Sohail Akram
sumber
sumber
Jawaban:
Setiap variabel (distribusi univariat) dengan yang diamati m i n o l d dan m sebuah x o l d nilai-nilai (atau ini bisa diatur batas potensi nilai-nilai) dapat Rescaled untuk berbagai m i n n e w untuk m sebuah x n e w dengan rumus berikut:v m i no l d m a xo l d m i nn e w m a xn e w
atau
.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
sumber
Untuk R ada juga
rescale
fungsi yang sudah tersedia dari paket skala , yang melakukan persis apa yang Anda inginkan dan apa yang dijelaskan oleh @AndrewTulloch dan @ttnphns:sumber
pertama, mari kita ambil beberapa contoh data:
Berikut adalah dua fungsi yang akan berfungsi di R
Atau, Anda bisa menggunakan transformasi lain. Misalnya, transformasi logit disebutkan oleh @ondrej
atau, transformasi lainnya:
sumber
Hanya untuk menambahkan jawaban ttnphnss, untuk mengimplementasikan proses ini dengan Python (misalnya), fungsi ini akan melakukan trik:
sumber
print rescale([-10, -9, -5, 2, 6])
# [0.0, 6.25, 31.25, 75.0, 100.0]
Saya menyarankan untuk tidak mengikat indeks ke interval 0-100, karena tidak meningkatkan interpretasi, tetapi membuatnya lebih sulit. Jika konstituen indeks bisa negatif, maka ada kemungkinan indeks menjadi negatif, dan itu mencerminkan apa yang terjadi dengan konstituen yang lebih baik daripada beberapa nilai rendah di kisaran 0-100, menurut saya.
sumber
Untuk R dengan paket standar dimuat, Anda bisa menggunakan skala () dari paket 'base':
gunakan 'as.vector ()' untuk mengambil x yang diskalakan sebagai vektor.
sumber