No.10921 多変量重回帰分析におけるAICの算出  【YOSHI】 2009/09/20(Sun) 16:15

多変量回帰分析と赤池情報基準の算出法に関して二つ質問があります。

予測変数が複数あり従属変数も複数ある場合の多変量重回帰分析を行うとします。
予測変数の次元を変化させて,最も相関が大きいモデルを推定します。
そのモデルのAIC(赤池情報基準量)を推定することは可能でしょうか。
もし可能であればどの統計ソフトで計算できるのかを教えてください。
私はSPSSを使っていますが,説明書を読んでも分かりません。

また,これを調べる過程でTrend Surface Analysis(TSA)という手法を知りました。
TSAは,2つの予測変数を基に従属変数を推定する手法であると理解しています。
これは,SAMという統計ソフトを用いてAICを自動的に算出することができました。
しかし,SAMを用いたTSAでは,従属変数が複数存在する場合は計算できないようです。
そこで,二つ目の質問は,何らかの統計ソフトを用いて従属変数が複数存在する場合のTSAを行うことが可能であるかどうかです。

よろしくお願いします。

No.10922 Re: 多変量重回帰分析におけるAICの算出  【青木繁伸】 2009/09/20(Sun) 16:37

前者の質問についてのみ

> モデルのAIC(赤池情報基準量)を推定することは可能でしょうか。
> もし可能であればどの統計ソフトで計算できるのかを教えてください

R でも計算できますよ。
> set.seed(1)
> d <- data.frame(matrix(rnorm(30), 10))
> colnames(d) <- c("x1", "x2", "y")
> ans <- lm(y~x1+x2, data=d)
> AIC(ans) # AIC を求める
[1] 24.12476

No.10923 Re: 多変量重回帰分析におけるAICの算出  【YOSHI】 2009/09/21(Mon) 10:50

青木先生

早速の回答ありがとうございます。
Rは慣れていないのですが,勉強して試してみます。

TSAに関して,自分なりに調べたところ,解決しました。
TSAも多変量重回帰分析の一形態にすぎないようです。
従って,SPSSなりRを用いてTSA分析もAICも計算できるのではないかと思います。

これも試してみます。

とりあえず解決しました。
ありがとうございました。

No.10924 Re: 多変量重回帰分析におけるAICの算出  【青木繁伸】 2009/09/21(Mon) 11:19

SPSS なら,

サポート SPSSの線形回帰分析で赤池情報化基準(AIC)を出力できますか ...
http://www.spss.co.jp/techsupport/faq/000271.html

が,ありますね。

No.10925 Re: 多変量重回帰分析におけるAICの算出  【YOSHI】 2009/09/21(Mon) 14:27

ありがとうございます。
SPSSのSYNTAXの存在を始めて知りました。
色々応用が利きそうですね。
しかし,多変量重回帰分析(General Linear Model > Multivariate)の場合はAICを計算できないようです。

多変量重回帰分析におけるAICの算出は,Rか手計算でがんばるしかないかもしれません。

No.10926 Re: 多変量重回帰分析におけるAICの算出  【青木繁伸】 2009/09/21(Mon) 15:35

「多変量重回帰分析」という訳語はどういうもんでしょうか。
「重回帰分析 multiple linear regression analysis」自体ですでに多変量と言うことなんです。訳語中には線形というのが入っていませんが linear なんです。
General Linear Model (GLM) というのも,一般化線形モデルという訳語が一般的です。GLM は,重回帰分析を含みます。あなたのモデルがどういうものか具体的な記述がないのですが,どういうモデルなんですか。
ついでに,「予測変数の次元を変化させて」って,予測変数を何乗かしたものを分析対象とするのですか(予測変数って,従属変数ですよね)?

No.10928 Re: 多変量重回帰分析におけるAICの算出  【YOSHI】 2009/09/21(Mon) 17:03

Multivariate multiple regressionの訳語です。
ちゃんとした文献ではなくネット上で見つけた訳語なので適切ではなかったかもしれません。
普通の重回帰分析は従属変数が1つですが,Multivariate multiple regressionは従属変数も多変量です。

ここで予測変数としたのは独立変数です。

独立変数を何乗かしたもの,しないもの,あるいはそれら適当に組み合わせたもの,を試験モデルとし,その中で最も説明率(R2)が高くかつAICが高いモデルを探索したいと考えています。

No.10929 Re: 多変量重回帰分析におけるAICの算出  【青木繁伸】 2009/09/21(Mon) 18:18

なるほど,そういう分析法がちゃんとあるんですね(勉強不足でした)
R の glm を使えば,AIC もちゃんと出るようですよ。
iris を使って実行してみました。
> glm(Petal.Width+Petal.Length~Sepal.Length+Sepal.Width, data=iris)

Call: glm(formula = Petal.Width + Petal.Length ~ Sepal.Length + Sepal.Width, data = iris)

Coefficients:
(Intercept) Sepal.Length Sepal.Width
-4.088 2.499 -1.817

Degrees of Freedom: 149 Total (i.e. Null); 147 Residual
Null Deviance: 937
Residual Deviance: 148.1 AIC: 431.8

> glm(Petal.Width+Petal.Length~I(Sepal.Length^2)+I(Sepal.Width^3), data=iris)

Call: glm(formula = Petal.Width + Petal.Length ~ I(Sepal.Length^2) + I(Sepal.Width^3), data = iris)

Coefficients:
(Intercept) I(Sepal.Length^2) I(Sepal.Width^3) # 独立変数の二乗項,三乗項を使ってみる
-0.20264 0.20333 -0.06333

Degrees of Freedom: 149 Total (i.e. Null); 147 Residual
Null Deviance: 937
Residual Deviance: 159.6 AIC: 443

No.10932 Re: 多変量重回帰分析におけるAICの算出  【知ったかぶり】 2009/09/21(Mon) 22:52

ちょっと自信はないのですが,multivariateの場合は,

fit<-lm(cbind(Petal.Width,Petal.Length)~Sepal.Length+Sepal.Width, data=iris)
AIC(fit)

ではないかと思います.

No.10933 Re: 多変量重回帰分析におけるAICの算出  【青木繁伸】 2009/09/22(Tue) 08:12

> lm(cbind(Petal.Width,Petal.Length)~Sepal.Length+Sepal.Width, data=iris)

だと,従属変数を2通りにした2つの重回帰分析を行っているような
私の glm の例は,根拠があって出したわけではないので(やってみたら,何か出力があったという程度のものなので)

No.10935 Re: 多変量重回帰分析におけるAICの算出  【知ったかぶり】 2009/09/22(Tue) 15:23

こちらのサイトに
http://www.ats.ucla.edu/stat/spss/whatstat/whatstat.htm#mmreg
SPSSによるMultivariate multiple regressionの解説があるので,同じデータを使ってRでやってみると,

library(car)
hsb2 <- read.table('http://www.ats.ucla.edu/stat/R/faq/hsb2.csv', header=TRUE, sep=",")
attach(hsb2)
fit<-lm(cbind(write,read)~female+math+science+socst)
Anova(fit,type=3)

これで一応SPSSと同じ結果が得られます.ただ,残念ながら上記サイトではAICは示されていません.AIC(fit)で間違いではないと思いますが…

No.10946 Re: 多変量重回帰分析におけるAICの算出  【wak】 2009/09/25(Fri) 09:11

多変量重回帰分析について,便乗して質問させていただきます。

Rのsummary.manova の多変量データを用いて,上記のcbind()を用いた方法で目的変量を結合しても,青木先生のおっしゃるように,どうも重回帰分析を個々の従属変数に別 々に行っているようにしか見えません...。SASなどでは,多変量重回帰分析を行うと,正準相関やMANOVAと同じ多変量検定量(Pillaiのト レースなど)が出力されるようですが,Rでこのような変数も含めて出力することは可能なのでしょうか?

No.10947 Re: 多変量重回帰分析におけるAICの算出  【aor】 2009/09/25(Fri) 09:27

> 多変量検定量(Pillaiのトレースなど)
carパッケージのManova関数でもできますし,組み込みのmanovaでもできます。

library(car)
hsb2 <- read.table('http://www.ats.ucla.edu/stat/R/faq/hsb2.csv', header=TRUE, sep=",")
result <- Manova(lm(cbind(write,read)~female+math+science+socst, hsb2))
summary(result)

No.10948 Re: 多変量重回帰分析におけるAICの算出  【青木繁伸】 2009/09/25(Fri) 16:20

glm(Petal.Width+Petal.Length~Sepal.Length+Sepal.Width, data=iris)
の formula の左辺の + は,加算の演算子ですね。
y <- iris$Petal.Width+iris$Petal.Length
glm(y~Sepal.Length+Sepal.Width, data=iris)
と同じです。
失礼しました。

No.11540 Re: 多変量重回帰分析におけるAICの算出  【YOSHI】 2009/12/17(Thu) 00:44

話を蒸し返すようですがRを用いた多変量重回帰分析に関して。

個々の従属変数に対してではなくて従属変数全体がどの程度そのモデルに説明されるかを表すことはできますか。
個々の従属変数についてはR-squareを見ればいいと思いますが。

hsb2 <- read.table('http://www.ats.ucla.edu/stat/R/faq/hsb2.csv', header=TRUE, sep=",")
result <- manova(lm(cbind(write,read)~female+math+science+socst, hsb2))
summary(result)
の結果では判断できません。

これはおそらくSPSSのPartial Eta Squaredに相当する値だと思います
http://faculty.chass.ncsu.edu/garson/PA765/manova.htm)。

No.11543 Re: 多変量重回帰分析におけるAICの算出  【波音】 2009/12/17(Thu) 14:03

lm(cbind(X, Y) ~ Z)という結果と,lm(X ~ Z)およびlm(Y ~ Z)によって得られる係数自体は全く同じものです。ただ,No.10947でaor先生がご指摘されているように,応答変数に行列(多変量データ)を指定 することで,carのManovaでの再利用が可能になる点で違います。

また,SEMで多変量回帰分析を実行した場合(LISRELやR のsem()を用いて実行した場合)と通常通りlm(X ~ Z), lm(Y ~ Z)を個別に行った場合とでも得られる回帰式(重回帰式)は全く同じになります。少なくともSEMで多変量回帰モデルとして解析する利点は,応答変数間 (この場合だとXとY)の偏相関を求められるということらしいです。つまり,個々の重回帰分析を繰り返した場合に,応答変数間の偏相関を考慮するというの が多変量回帰モデルの発想。

だから,

> 従属変数全体がどの程度そのモデルに説明されるかを表すことはできますか。

という問題に対して多変量回帰分析を行ってもあまり有益な結果を得ることはできないのでは?と思われます。

この場合には正準相関分析か,あるいは応答変数である多変量データに対して主成分分析を行い,得られた主成分を応答変数として用いるような方法が適当かと。

この辺りの手法はそれほど頻繁に使われる方法でもないのか,あまり日本語の参考書が見当たりませんが,例えば:

君山由良「多変量回帰分析・正準相関分析・多変量分散分析」データ分析研究所(2006)

などが参考になるかもしれません。

● 「統計学関連なんでもあり」の過去ログ--- 043 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る