【R Advent Calendar 2013】Rで非計量多次元尺度法を使ってみた
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

【R Advent Calendar 2013】Rで非計量多次元尺度法を使ってみた

2013-12-19 23:16

    この記事は R Advent Calendar 2013 の19日目の記事です。

    先月のデータ研究会(http://ch.nicovideo.jp/promath/blomaga/ar388388)でタグの地図の機械生成に「非計量多次元尺度法」を使いましたので、今回は非計量多次元尺度法をRで行う方法を紹介します。

    多次元尺度法は2点間の距離データから座標を求める方法です。
    距離データがユークリッド距離で作られたものに適用できる「計量」多次元尺度法と
    距離の公理を満たす場合を満たさなくても適用できる「非計量」多次元尺度法があります。

    Rで非計量多次元尺度法を行うためにisoMDS関数を使います。
    この関数はMASSパッケージに含まれています。

    isoMDS(d, y = cmdscale(d, k), k = 2, maxit = 50, trace = TRUE, tol = 1e-3, p = 2)

    引数

    d : 距離行列
    y : 反復の初期値
    k : 出力ベクトルの次元
    maxit : 最大反復回数
    trace : TRUEにすると反復時の最適化を行う
    tol : この値以下になった場合、反復を終了する
    p : ミンコフスキー距離の大きさ

    以下のような距離行列が入っているファイルを用意します

    1.0, 2.0, 3.0, 4.0
    2.0, 1.0, 2.0, 5.0
    3.0, 2.0, 1.0, 7.0
    4.0, 5.0, 7.0, 1.0

    コード例

    # ファイル読み込み、出力はlist
    lis <- read.table("ファイル名" sep="," header="FALSE)
    # 距離行列への変換
    dis <- as.dist(lis)
    # MASSパッケージの呼び出し
    library(MASS)
    # 非計量多次元尺度法
    output <- isoMDS(dis,k=2)
    # 描画
    plot(output$points)

    なお、as.distは省略できません。

    結果

    なお結果には回転と対称の自由度があります。

    最後に、先月のデータ研究会で発表したタグの地図の機械生成(タグ数:130)の結果を以下に掲載します。

    ご覧頂きましてありがとうございました。

    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。