• 検索結果がありません。

主成分分析 prcomp()

ドキュメント内 ためになった他の人のサイト script of (ページ 171-174)

5.2 主成分分析

5.2.1 主成分分析 prcomp()

関数

prcomp()

は与えられたデータ行列に主成分分析を実行し,結果をクラス

"prcomp"

のオブジェクトとして返す.

書式:

prcomp(x, ...)

#

クラス

formula

に対する

S3

メソッド

prcomp(formula, data = NULL, subset, na.action, ...)

#

既定の

S3

メソッド

prcomp(x, retx = TRUE, center = TRUE, scale. = FALSE, tol = NULL, ...)

predict(object, newdata, ...) #

クラス

prcomp

に対する

S3

メソッド 引数:

formula

応答変数を持たない公式で,数値変数のみを参照する

data

オプションデータフレーム

(

もしくは類似物,

model.frame()

参照

)

で,公式

formula

中の変数を含む.既定では変数は

environment(formula)

から取ら れる

subset

オプションベクトル.データ行列

x

から行

(

観測値

)

を選択するのに使う

na.action

データが

NA

を含むときの処理を指示する関数.既定では

options

で設定

された

na.action

.未設定なら

na.fail()

.「工場出荷時」既定値は

na.omit() ...

他のメソッドに

(

から

)

渡される引数.もし

x

が公式なら,

scale

tol

を指

定できる

x

主成分分析のためのデータである,数値または複素数値行列

(

もしくはデータフ レーム

)

retx

論理値で,回転された変数を返すべきかどうかを指示する

center

論理値で,変数を平均が

0

になるように移動するかどうかを指示する.別の方

法として,

x

の列数に等しいベクトルを与えても良い.この値は

scale

関数に 渡される

scale

論理値で,解析前に変数を標準偏差が

1

になるようにスケール化するかどうか

を指示する.既定値は

S

との互換性のために

FALSE

であるが,一般的にスケー ル化が望ましい.別の方法として,

x

の列数に等しいベクトルを与えても良い.

この値は

scale()

関数に渡される

tol

それ以下の大きさの成分を除外すべきかどうかを指示する値.

(

成分は,もしそ れらの標準偏差が第一成分の標準偏差の

tol

倍以下であれば除外される

)

.既定 である無指定では如何なる成分も除外されない.その他の

tol

の設定としては

tol=sqrt(.Machine$double.eps}

もしくは

tol=0

が考えられ,実質的に定数 値の成分を取り除く

object "prcomp"

を継承するクラスのオブジェクト

newdata

それに関する予測値を求めるオプションのデータフレームもしくは行列.も

し与えられなければ,スコアが用いられる.もし元の当てはめが公式,データフ レームもしくは列名を持つ行列だったならば,

newdata

は同じ名前の列を含むべ きである.さもなければ,同じ数の列を含むべきで,同じ順序で使用される 返り値: クラス

"prcomp"

のリスト.次の成分を含む:

sdev

主成分の標準偏差

(

つまり,共分散・相関行列の固有値の平方根であるが,実際 の計算はデータ行列の特異値分解を用いて行われる

rotation

変数の負荷量行列

(

つまり,列が固有値を含む行列

)

.関数

princomp()

は これを成分

loadings

として返す

x

もし

retx=TRUE

なら,中心化

(

要求されればスケール化

)

され,

rotation

行 列で回転されたデータが返される.従って,

cov(x)

は対角行列

diag(sdev}^2

である.公式メソッドに対しては,

na.action()

で除外された値の処理に

napredict()

が使われる

center, scale

使われた中心とスケール,もしくは

FALSE

計算は

(

中心化,もしかするとスケール化された

)

データ行列の特異値分解を用いて行 われ,共分散行列の固有値を使わない.これは一般的に数値精度の点で好ましい方法であ る.これらのオブジェクトの

print

メソッドは結果を体裁良く出力し,

plot

メソッドは スクリープロット

(screeplot)

を行う.もし

0

もしくは定数値

(center=TRUE

の場合

)

の変数を持てば,

scale=TRUE

は使うべきではない.

注意: 回転行列の列の符号は任意であり,したがって主成分分析用の他のプログラムと異 なるかも知れない.

R

の構築次第でも異なり得る.

関連:

biplot.prcomp(), screeplot(), princomp(), cor(), cov(), svd(), eigen()

# 米国の犯罪検挙率データUSArrestsを使用(次の図を参照)

# このデータ中の変数の分散の大きさは非常に異なるため,スケーリングが望ましい

> prcomp(USArrests) # スケーリング無し(不適当)

Standard deviations:

[1] 83.732400 14.212402 6.489426 2.482790 Rotation:

PC1 PC2 PC3 PC4

Murder 0.04170432 -0.04482166 0.07989066 -0.99492173 Assault 0.99522128 -0.05876003 -0.06756974 0.03893830 UrbanPop 0.04633575 0.97685748 -0.20054629 -0.05816914 Rape 0.07515550 0.20071807 0.97408059 0.07232502

> prcomp(USArrests, scale = TRUE) # スケーリングあり Standard deviations:

[1] 1.5748783 0.9948694 0.5971291 0.4164494 Rotation:

PC1 PC2 PC3 PC4

Murder -0.5358995 0.4181809 -0.3412327 0.64922780 Assault -0.5831836 0.1879856 -0.2681484 -0.74340748 UrbanPop -0.2781909 -0.8728062 -0.3780158 0.13387773 Rape -0.5434321 -0.1673186 0.8177779 0.08902432

> prcomp(~ Murder+Assault+Rape,data=USArrests,scale=d TRUE) # 公式による変数指定 Standard deviations:

[1] 1.5357670 0.6767949 0.4282154 Rotation:

PC1 PC2 PC3

Murder -0.5826006 0.5339532 -0.6127565 Assault -0.6079818 0.2140236 0.7645600 Rape -0.5393836 -0.8179779 -0.1999436

> plot(prcomp(USArrests)) # 2主成分の分散の棒グラフ

> summary(prcomp(USArrests, scale = TRUE)) # summaryメソッド Importance of components:

PC1 PC2 PC3 PC4

Standard deviation 1.57 0.995 0.5971 0.4164 Proportion of Variance 0.62 0.247 0.0891 0.0434 Cumulative Proportion 0.62 0.868 0.9566 1.0000

> biplot(prcomp(USArrests, scale = TRUE)) # biplotメソッド(データと変数の双方をプロット)

prcomp(USArrests, scale = TRUE)

Variances 0.00.51.01.52.0

−0.2 −0.1 0.0 0.1 0.2 0.3

−0.2−0.10.00.10.20.3

PC1

PC2

Alabama Alaska

Arizona

Arkansas

California Colorado

Connecticut Delaware Florida

Georgia

Hawaii Idaho

Illinois

Indiana Iowa

Kansas Kentucky Louisiana

Maine Maryland

Massachusetts Michigan

Minnesota Mississippi

Missouri Montana

Nebraska

Nevada

New Hampshire

New Jersey New Mexico

New York North Carolina

North Dakota

Ohio Oklahoma Oregon Pennsylvania

Rhode Island South Carolina

South Dakota Tennessee

Texas

Utah

Vermont

Virginia

Washington

West Virginia

Wisconsin Wyoming

−5 0 5

−505

Murder

Assault

UrbanPop Rape

米国犯罪検挙率の4主成分の分散(左)とそのbiplot図(右)

ドキュメント内 ためになった他の人のサイト script of (ページ 171-174)