アメリカ各州の犯罪件数のデータ
crime.csvを利用して主成分分析を行います。まず、データを読み込みます。read.csv中の「row.names=1」はデータの1列目をデータとしてではなく、列の名前として指定するというオプションです。
> crime <- read.csv("crime.csv",row.names=1)
> crime
殺人 強姦 車の窃盗
ALABAMA 14.2 25.2 280.7
ALASKA 10.8 51.6 753.3
ARIZONA 9.5 34.2 439.5
ARKANSAS 8.8 27.6 183.4
CALIFORNIA 11.5 49.4 663.5
COLORADO 6.3 42.0 477.1
CONNECTICUT 4.2 16.8 593.2
DELAWARE 6.0 24.9 467.0
FLORIDA 10.2 39.6 351.4
GEORGIA 11.7 31.1 297.9
HAWAII 7.2 25.5 489.4
主成分分析を行うための関数はprcompです。以下のように利用します。「scale=T」は標準化後のデータについて分析を行うというオプションです。いつでも必ず利用するオプションと考えて下さい。
> result <- prcomp(crime,scale=T)
summaryを使うと、累積寄与率が表示されます。
> summary(result)
Importance of components:
PC1 PC2 PC3
Standard deviation 1.314 0.970 0.577
Proportion of Variance 0.575 0.313 0.111
Cumulative Proportion 0.575 0.889 1.000
第2主成分までの累積寄与率が88.9%であるので、第2主成分までについて分析を進めていきましょう。
結果を代入した変数名$rotationとすると、主成分負荷量が表示されます。
> result$rotation
PC1 PC2 PC3
殺人 -0.6088455 0.49760728 -0.6178140
強姦 -0.6910353 0.04978736 0.7211043
車の窃盗 -0.3895861 -0.86597241 -0.3135514
また、結果を代入した変数名$x とすると、主成分得点が表示されます。
> result$x
PC1 PC2 PC3
ALABAMA -0.83442342 1.300508984 -0.95824549
ALASKA -2.94664437 -1.131057633 0.58807447
ARIZONA -0.99230103 0.026252731 0.13840981
ARKANSAS 0.05770611 1.052383789 0.22314053
CALIFORNIA -2.73467002 -0.649053651 0.47438226
COLORADO -1.06513967 -0.517820358 1.11148111
累積寄与率から第2主成分までに全体の89%の情報が含まれていることが分かりました。ここでは、第1主成分と第2主成分をそれぞれX軸、Y軸にして、各州の主成分得点を散布図にしてみましょう。
> plot(result$x[,1],result$x[,2],pch=" ",xlab="第1主成分",ylab="第2主成分")
> text(result$x[,1],result$x[,2],rownames(result$x))
練習問題
pharma.csvには製薬会社の経営指標が、
industry.csvには各都道府県の産業別労働従事者比率が記録され得ています。このデータを使って主成分分析を行いなさい。

コメントする