R'de çok boyutlu ölçeklendirme nasıl yapılır (örnekle)
İstatistikte, çok boyutlu ölçeklendirme , soyut bir Kartezyen uzayda (genellikle 2B uzay) bir veri kümesindeki gözlemlerin benzerliğini görselleştirmenin bir yoludur.
R’de çok boyutlu ölçekleme gerçekleştirmenin en kolay yolu, aşağıdaki temel sözdizimini kullanan yerleşik cmdscale() işlevini kullanmaktır:
cmdscale(d, eig = YANLIŞ, k = 2, …)
Altın:
- d : Genellikle dist() işlevi tarafından hesaplanan bir mesafe matrisi.
- eig : özdeğerlerin döndürülüp döndürülmeyeceği.
- k : Verilerin görüntüleneceği boyutların sayısı. Varsayılan 2’dir .
Aşağıdaki örnekte bu fonksiyonun pratikte nasıl kullanılacağı gösterilmektedir.
Örnek: R’de Çok Boyutlu Ölçekleme
R’de çeşitli basketbol oyuncuları hakkında bilgi içeren aşağıdaki veri çerçevesine sahip olduğumuzu varsayalım:
#create data frame df <- data. frame (points=c(4, 4, 6, 7, 8, 14, 16, 19, 25, 25, 28), assists=c(3, 2, 2, 5, 4, 8, 7, 6, 8, 10, 11), blocks=c(7, 3, 6, 7, 5, 8, 8, 4, 2, 2, 1), rebounds=c(4, 5, 5, 6, 5, 8, 10, 4, 3, 2, 2)) #add row names row. names (df) <- LETTERS[1:11] #view data frame df points assists blocks rebounds A 4 3 7 4 B 4 2 3 5 C 6 2 6 5 D 7 5 7 6 E 8 4 5 5 F 14 8 8 8 G 16 7 8 10 H 19 6 4 4 I 25 8 2 3 D 25 10 2 2 K 28 11 1 2
cmdscale() fonksiyonu ile çok boyutlu ölçekleme gerçekleştirmek ve sonuçları 2 boyutlu alanda görselleştirmek için aşağıdaki kodu kullanabiliriz:
#calculate distance matrix
d <- dist(df)
#perform multidimensional scaling
fit <- cmdscale(d, eig= TRUE , k= 2 )
#extract (x, y) coordinates of multidimensional scaling
x <- fit$points[,1]
y <- fit$points[,2]
#create scatterplot
plot(x, y, xlab=" Coordinate 1 ", ylab=" Coordinate 2 ",
main=" Multidimensional Scaling Results ", type=" n ")
#add row names of data frame as labels
text(x, y, labels=row. names (df))
Orijinal veri çerçevesindeki orijinal dört sütunda (sayılar, asistler, bloklar ve ribaundlar) benzer değerlere sahip olan oyuncular olay örgüsünde birbirine yakındır.
Örneğin A ve C oyuncuları birbirine kapalıdır. İşte orijinal veri çerçevesindeki değerleri:
#view data frame values for players A and C df[rownames(df) %in% c(' A ', ' C '), ] points assists blocks rebounds A 4 3 7 4 C 6 2 6 5
Sayı, asist, blok ve ribaund değerleri oldukça benzer, bu da 2 boyutlu senaryoda neden birbirlerine bu kadar yakın olduklarını açıklıyor.
Bunun tersine, olay örgüsünde birbirlerinden çok uzakta olan B ve K oyuncularını düşünün.
Orijinal verilerdeki değerlerine bakarsak oldukça farklı olduklarını görebiliriz:
#view data frame values for players B and K df[rownames(df) %in% c(' B ', ' K '), ] points assists blocks rebounds B 4 2 3 5 K 28 11 1 2
Dolayısıyla 2 boyutlu çizim, her oyuncunun veri çerçevesindeki tüm değişkenler açısından ne kadar benzer olduğunu görselleştirmenin iyi bir yoludur.
Benzer istatistiklere sahip oyuncular birbirine yakın gruplandırılırken, çok farklı istatistiklere sahip oyuncular olay örgüsünde birbirlerinden daha uzakta bulunur.
cmdscale() işlevinin sonuçlarını sakladığımız değişkenin adı olan fit yazarak da çizimdeki her oyuncunun tam koordinatlarını (x, y) çıkarabileceğinizi unutmayın:
#view (x, y) coordinates of points in the plot
fit
[,1] [,2]
A -10.6617577 -1.2511291
B -10.3858237 -3.3450473
C -9.0330408 -1.1968116
D -7.4905743 1.0578445
E -6.4021114 -1.0743669
F -0.4618426 4.7392534
G 0.8850934 6.1460850
H 4.7352436 -0.6004609
I 11.3793381 -1.3563398
J 12.0844168 -1.5494108
K 15.3510585 -1.5696166
Ek kaynaklar
Aşağıdaki eğitimlerde R’de diğer ortak görevlerin nasıl gerçekleştirileceği açıklanmaktadır:
R’deki veriler nasıl normalleştirilir
R’de veri merkezi nasıl oluşturulur?
R’de aykırı değerler nasıl kaldırılır