R で多次元尺度計算を実行する方法 (例あり)


統計学では、多次元スケーリングは、抽象的なデカルト空間 (通常は 2D 空間) 内のデータ セット内の観察の類似性を視覚化する方法です。

R で多次元スケーリングを実行する最も簡単な方法は、次の基本構文を使用する組み込みのcmdscale()関数を使用することです。

cmdscale(d, eig = FALSE, k = 2, …)

金:

  • d : 一般的にdist()関数によって計算される距離行列。
  • eig : 固有値を返すかどうか。
  • k : データを表示する次元の数。デフォルトは2です。

次の例は、この関数を実際に使用する方法を示しています。

例: R での多次元尺度構成

R に、さまざまなバスケットボール選手に関する情報を含む次のデータ フレームがあるとします。

 #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()関数で多次元スケーリングを実行し、結果を 2D 空間で視覚化できます。

 #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))

R の多次元スケーリング

元のデータ フレーム内の元の 4 つの列 (ポイント、アシスト、ブロック、リバウンド) で同様の値を持つ選手は、プロット内で互いに近くにあります。

たとえば、プレーヤーACは互いに接近しています。元のデータ フレームからの値は次のとおりです。

 #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

ポイント、アシスト、ブロック、リバウンドの値はすべて非常に似ており、2D プロットでそれらが互いに非常に近い理由が説明されています。

対照的に、プロット内で遠く離れたプレーヤーBKについて考えてみましょう。

元のデータの値を参照すると、それらがまったく異なることがわかります。

 #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

したがって、2D プロットは、データ フレーム内のすべての変数にわたって各プレーヤーがどの程度類似しているかを視覚化するのに適した方法です。

プロット内では、同様の統計情報を持つプレイヤーは近くにグループ化されますが、非常に異なる統計情報を持つプレイヤーは互いに遠く離れています。

また、 「fit」と入力して、プロット内の各プレーヤーの正確な座標 (x, y) を抽出することもできます。これは、 cmdscale()関数の結果を保存した変数の名前です。

 #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

追加リソース

次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。

R でデータを正規化する方法
R でデータセンターを構築する方法
R で外れ値を削除する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です