こんにちは、樋口です。書き込みありがとうございます。
分析結果が出ましたようでなによりです。
ただ、ひとつお詫びなのですが、先ほどのコマンドでは、非常に汎用的な標準
化を文書ごとに行ってしまいました。先ほどのコマンドを実行後に「fd」と入
力してエンターを押していただきますと、標準化後の値、すなわちクラスター
分析に使われたデータがでます。どの行(文書)も、すべてのコードの値を足
すと、0になるという形で(平均0に)標準化してしまっています。
これは非常に汎用的に使われる方法で、私もさきほどうっかり使ってしまいま
した。しかし文章データでは「データ100語あたり」とか「データ1000語あた
り」何回出現しているか、という標準化がより多く使用されているように思い
ます。
※「○語あたり」の箇所が100でも1000でも、今回の分析結果は変わりません。
ただしコーディングでは、条件に合致する文の数を数えていますから、今回の
場合は「100文あたりいくつの文に『てもらう』が含まれるか」といった数値
に標準化することになります。この形で標準化して分析するコマンドは以下の
ようになります。
#---------------------------------------------------------------------
# クラスター分析
library(amap)
std <- d
for (i in 1:nrow(std)){
std[i,] <- std[i,] / table(v)[i] * 100
}
cluster <- hcluster( std, method="euclid", link="ward")
# プロット
par( mai=c(0,0,0,0), mar=c(1,2,1,0), omi=c(0,0,0,0), oma=c(0,0,0,0) )
plot(cluster,ann=0,hang=-1)
#---------------------------------------------------------------------
もしも標準化を行わずに、条件に合致した文の数をそのまま使って分析する場
合には、コマンドは以下のようになります。この場合には、長い文書(小説)
では数値が全体に大きめになるでしょうから、長い文書同士、短い文書同士が
同じクラスターに入りやすくなります。標準化を行わない場合、文書の長さも
クラスター化の基準になるということです。
#---------------------------------------------------------------------
# クラスター分析
library(amap)
cluster <- hcluster( d, method="euclid", link="ward")
# プロット
par( mai=c(0,0,0,0), mar=c(1,2,1,0), omi=c(0,0,0,0), oma=c(0,0,0,0) )
plot(cluster,ann=0,hang=-1)
#---------------------------------------------------------------------
先の書き込みの汎用的な標準化よりも、上記の「100文あたり...」という標準
化の方が、もしかすると、より実感に近いクラスターが得られる可能性があり
ます。適宜、お試しいただけましたら幸いです。
こちらも暑いのですが、そちらもさぞやと存じます。御身おいといの上、ご活
躍くださいますよう祈念申し上げます。