統計ブログはじめました!

各専門分野の統計技術、方法、テクニックなどを気ままに分かり易く例題をもとに解説します。

統計のコツのこつ(62)

2018-02-19 18:26:31 | 日記・エッセイ・コラム
 
「すぐに役立つ統計のコツ」(オーム社)の「クラスター分析」(117ページ)を参考に、次の例題を"データ解析環境R"で気軽に楽しんで見ましょう。
ここでは、
入院患者(女性)のアンケートから抽出した"語句(Words)" の出現頻度から入院患者に共通する心理などを考えて見ましょう。
(Week-1:入院1週間、Week-2:入院2週間、Wek-3:入院3週間)
 
表1 女性入院患者から抽出した語句(Words)
 
表1のWords について階層的クラスター分析を行い "Words" を整理し、その特徴を見てみましょう。

表1が Excel であるなら、
コピー&ペーストで「R」に読込んで下さい。
 
***
dat<- read.delim("clipboard", header=T, row.names=1)  # row.names=1 はWords名を除く指示
head(dat)
words<- dist(dat[, 1:3], "euclidean") # 頻度をユークリッド距離に変換
(words.hc<- hclust(words, method="ward.D2")) # ward.D2 を使用
plot(words.hc)
 
#「R バージョン3.1.0」以降では"ward.D2"を指定して下さい。すなわち、hclust(dat, method=”ward.D2″) と指定、
# なお、「Rバージョン3.0.3」 までは、hclust(dat, method=”ward.D”) とします。
 
出力結果:
 
ここでの、クラスターの方法は"ウォードD2法"、距離は"ユークリッド距離"ですが、その他にも色々なクラスターの方法や類似度=距離があります。
クラスター分析には、ある程度の試行錯誤が伴います。
***
 
図1 デンドログラム(樹枝図)

 樹枝図の高さを揃えていません。揃えるなら、
***
plot(words.hc, hang=-1)
***
とします。
 
この図1から、入院患者のアンケート回答に内在する心理状態を知ることが出来でしょうか・・?
大きく3つのクラスターに分かれた語句の出現頻度から、
例えば
①「不安を感じる、生きている」などは、"不安ながらも助かった" ことの実感が感じられます。
②「検査が不安、動悸がする、・・、気を落ち着けて、落ち込む」などは、検査結果の不安やネガティブな心理が、
  そして「激痛、先生を信頼」は医師を信頼して痛みに耐えている心情かも知れません。
③「お腹が張っている、・・、病状が分かる、顔色が悪い」などは、まだ症状があり、病気を自覚している様です。そして、
④「退院は何時、看護師に感謝、友達の励まし」などは、回復と退院を待ちわびる心情が、そして、 
 「明るく務める、主人に感謝」は夫や家族に心配を掛けないように気配りしているのだろうか。
以上は、
筆者の勝手な解釈であり、アンケート(語句)の出現頻度に共通する女性の心理が表れている様にも思われます・・?
実際には、
研究者自身の知識・経験から読み解き、共通する因子名を命名しても良いでしょう。
 
ここでの最適なクラスター数はいくつでしょうか・・?
図1のデンドログラムからは"3~4"ってところでしょうか。
それでは、
非階層的クラスター分析としてよく知られている "K-means法" を簡単にご紹介しておきましょう。
 
***
# K-Means Clustering with 3 clusters
fit <- kmeans(dat,3 ) # クラスター数を3としてみる。
library(cluster)
fit <- kmeans(dat,3 )
clusplot(dat, fit$cluster, color=TRUE , shade=FALSE, labels=2)
 
出力結果;
図2 K-means によるクラスタープロット
 
クラスター数は"3"程度が良さそうですが、色々な方法でやって見て下さい。
***
 
詳しく知りたいなら、下記URL(統計学入門:杉本典夫先生)をお勧めします。
http://www.snap-tck.com/room04/c01/stat/stat20/stat2001.html
 
初心者なら、当所の「やさしい医学統計手法」で大まかだけどお役に立てば嬉しいです。
http://kstat.sakura.ne.jp/medical/med_029.htm

情報統計研究所はここから!
 
 
 
 
 
 

統計のコツのこつ(61)

2018-02-01 13:00:31 | 日記・エッセイ・コラム
前回(60)の続きで、「すぐに役立つ統計のコツ」(オーム社)をもとに書いています。
本書の立ち読みは下記URLからど~ぞ!
http://www.e-hon.ne.jp/bec/SA/Detail?refShinCode=0100000000000033365048&Action_id=121&Sza_id=B0
 
それでは、今回はSPSSで正準判別分析をやって見ましょう。その前に、
杉本典夫先生(統計学入門)からのコメントの一部をご紹介しておきます。
***
ロジスティック回帰分析は前向き研究から得られたデータに適用する手法です。
・・・
ロジスティック回帰分析は、最初から前向き研究用の手法として開発されたのです。
そのため後ろ向き研究から得られたデータには判別分析を適用し、
必要に応じて有病率(事前確率)とロジスティック曲線を利用して、
判別スコアを予測確率に変換するのが本来の使い方です。
***
SPSSを立ち上げて下さい。
Excelで作成しているなら、コピー&ペーストで SPSS の"データエリア"に取込むことが出来ます。
そして、
分析→分類→判別分析→グループ変数[fDiag]→範囲の定義をクリック→最小[0],最大[1]→続行→独立変数[SBMG, UBMG, UBMG]→統計→関数係数[☑標準化されていない]→続行→分類→
[◎すべてのグループが等しい、◎グループ内、☑ケースごとの結果、☑集計表]→続行→OK
 
色々な統計量が出力されますが、ここでは最小限の表示を紹介します。
 
SPSSの出力結果:
 

 
 
以上の様に、SPSSでは "正準判別分析" の結果が返されます。
 
「R」での"正準判別分析"のライブラリーには次の「candisc」があります。
やって見ましょう。
 
***
# 前回と同じ要領でデータを取り込む。
dat<- read.delim("clipboard", header=T) 
head(dat)
s.dat<- scale(dat[, 2:4]) # データの標準化
dat1<- cbind(dat, s.dat)  # 原データと標準化データの結合
head(dat1)
y1<- dat1[, 1]
x1<- dat1[, 2]
x2<- dat1[, 3]
x3<- dat1[, 4]
fit.lm <- lm( cbind(x1,x2, x3)~ y1) # 説明変数(x)と目的変数(y)の配置に注意。
 
library(candisc) # 事前にインストールしておく
fit.disc <- candisc(fit.lm)
fit.disc
summary(fit.disc, means=T, scores=F, coef=c("raw"))
主な出力結果:
raw coefficients: # 各説明変数の係数
         x1          x2          x3
-0.00305863 -0.01468579  0.00011609
(x1=U.Pro、x2=S.BMG、x3=U.BMG)
***
 
ここでの出力結果(係数)は、SPSSと異なっていますが判別結果は同じです。この係数は前回のパッケージ・ライブラリー(lda)の結果と一致しており、関数(lda)は、説明変数が3つ以上のとき正準判別分析の結果が返されるようです。
なお、
標準化された正準判別関数の係数は、標準化データ(dat1)について実行すれば良いでしょう。
 
参考までに、
"SAS-JMP"の判別分析もご紹介しておきます。
分析の手順;
JMPを立上げ→分析→多変量→判別分析→Y.共変量[U.Pro, S.BMG, U.BMG]→X.カテゴリ[fDiag]→OK
→結果の出力→判別分析→正準オプション→正準詳細を表示→▶スコアリング係数→図1・表1
 
図1 正準散布図

 
表1 正準判別係数
 
 
"SAS-JMP"の判別係数は「R」と一致していました。
 
情報統計研究所はここから!