読者です 読者をやめる 読者になる 読者になる

クラスター分析におけるp値を計算する

r stat

 今回は、Rのpvclustパッケージを用いて、クラスター分析におけるp値を計算してみます。分析データは、caパッケージのauthorとします。*1
 以下の例では、相関係数と群平均法を用いたクラスター分析を行い、ブートストラップのリサンプリング数を1000回としています。

# パッケージの読み込み
library(pvclust)
library(ca)
# 分析データ
data(author)
# クラスター分析とp値の計算
result <- pvclust(t(author), method.dist = "cor", method.hclust = "average", nboot = 1000)
# 結果の視覚化
plot(result)
# alphaが0.95以上のクラスターを線で囲む
pvrect(result, alpha = 0.95)

 上記のスクリプトを実行すると、以下のようなデンドログラムが表示されます。図中の赤い数字はAU (Approximately Unbiased) p-valueを表し、緑の数字はBP (Bootstrap Probability) valueを表しています。*2

f:id:langstat:20140821204231p:plain

 そして、seplot関数を用いると、AU p-valueの標準誤差を視覚化することができます。

# AU p-valuesの標準誤差を視覚化
seplot(result)

 上記のスクリプトを実行すると、以下のような図が表示されます。この図を見ると、最も大きな標準誤差が0.03程度であることが分かります。*3

f:id:langstat:20140821204246p:plain

*1:このデータは、12編の小説における26種類のアルファベットの数を集計したものです。

*2:因みに、マルチスケールのブートストラップ・リサンプリングに基づくAU p-valueの方が、ノーマルなブートストラップ・リサンプリングに基づくBP valueよりも優れていると言われています。

*3:seplot関数を実行した結果、大きい標準誤差を持つクラスターがあることが判明した場合は、こちらを参照してください。