No.22153 重回帰での切片有り無しモデルについて  【さくらとお城】 2016/09/29(Thu) 17:24

いつもお世話になっております。

下記のデータで切片有無の重回帰を行った結果の解釈に悩んでいます。
       R     G    B    N
1 99.0 128.0 27.0 1.61
2 91.5 99.5 40.5 2.16
3 90.0 113.0 30.0 2.32
4 72.5 72.0 45.0 3.07
5 80.0 77.5 46.0 2.97
6 110.0 142.0 24.0 1.58
7 96.5 114.5 31.5 1.87
8 98.0 119.5 30.0 2.02
9 112.5 139.5 21.5 1.61
10 88.0 104.0 36.5 2.02
11 81.5 74.0 44.0 2.87
12 90.0 102.5 34.5 1.99
13 84.5 92.5 39.0 2.17
14 99.5 120.5 34.5 2.49
15 81.0 79.0 44.0 2.99
16 91.0 103.0 38.0 2.25
17 95.5 111.5 32.5 2.07
18 85.5 88.0 42.5 2.31
19 83.0 79.5 45.5 2.59
20 81.0 89.0 38.5 2.36

data=read.table("data.txt",header=TRUE)

lm1=lm(N~R+G+B+0,data=data)
lm2=lm(N~R+G+B,data=data)

summary(lm1)
AIC(lm1)

summary(lm2)
AIC(lm2)
以下はRでの結果の一部だけです。
> summary(lm1)
lm(formula = N ~ R + G + B + 0, data = data)

Residual standard error: 0.2448 on 17 degrees of freedom
Multiple R-squared: 0.9904, Adjusted R-squared: 0.9888
F-statistic: 587.5 on 3 and 17 DF, p-value: < 2.2e-16

> AIC(lm1)
[1] 5.21581

> summary(lm2)
lm(formula = N ~ R + G + B, data = data)

Residual standard error: 0.2407 on 16 degrees of freedom
Multiple R-squared: 0.765, Adjusted R-squared: 0.7209
F-statistic: 17.36 on 3 and 16 DF, p-value: 2.764e-05

> AIC(lm2)
[1] 5.327225
切片無しモデルはAdjusted R-squared: 0.9888で,良すぎるようにも見えて,大丈夫でしょうか?

どうぞよろしくお願いします。

No.22154 Re: 重回帰での切片有り無しモデルについて  【青木繁伸】 2016/09/30(Fri) 07:06

基本的には,「理論的に考えて」独立変数が 0 のときに従属変数は 0 になるだろうかということに尽きるでしょう。
データだけから見る場合,R, G を独立変数とした単回帰では原点を通らないので,重回帰でも R, G, B が 0 のとき原点を通るというモデルはどうなんでしょうか?
切片なしのモデルと切片ありのモデルでは決定係数の計算方法が異なるので,両者を比較することはできません。

No.22155 Re: 重回帰での切片有り無しモデルについて  【さくらとお城】 2016/09/30(Fri) 08:29

青木先生,早速のご返事ありがとうございます。

>基本的には,「理論的に考えて」独立変数が 0 のときに従属変数は 0 になるだろうかということに尽きるでしょう。

今回のデータは,RGBでNを予測する目的で実験で得たものです。理論的にRGBが0なら,Nも0になることについて,確証もないし,確かめることも難しい。

>切片なしのモデルと切片ありのモデルでは決定係数の計算方法が異なるので,両者を比較することはできません。

これに関連した図書や参考論文があれば,ぜひ教えてください。

No.22156 Re: 重回帰での切片有り無しモデルについて  【青木繁伸】 2016/09/30(Fri) 17:00

以前はこの件のページがあったのですが,Excel の馬鹿馬鹿しさ,および Excel をひいき・寵愛・擁護するひとからのクレームによりそのページ(と Excel に関する全ページ)は削除しました。

当たり障りのないところを再現すると

======= 引用開始
スネデッカー・コクラン著(畑村,奥野,津村訳)「統計的方法 原書第6版」岩波書店の6章18節「原点をとおる直線のあてはめ」というところに詳しく書いてあります。

SPSS はどんな風にしているかなと思ってやってみて,以下のようなことであるらしいと思います。
  x  y  x^2  x・y  予測値     y^2  予測値^2
1 1 1 1 0.40779221 1 0.16629448
2 2 4 4 0.81558442 4 0.66517794
3 2 9 6 1.22337662 4 1.49665036
4 4 16 16 1.63116883 16 2.66071176
5 3 25 15 2.03896104 9 4.15736212
6 3 36 18 2.44675325 9 5.98660145
7 2 49 14 2.85454545 4 8.14842975
8 2 64 16 3.26233766 4 10.6428470
9 3 81 27 3.67012987 9 13.4698533
10 4 100 40 4.07792208 16 16.6294485
合計 385 157 76 64.0233766

a = 0.4077922 = 157 / 385
R^2 = 0.8424129 = 64.0233766 / 76 =予測値の平方和 / yの平方和
R = 0.9178305

分散分析表
  平方和  自由度 平均平方    F値
回帰 64.023377   1   64.0233766 48.1112557
残差 11.976623   9  1.33073593
全体 76     10
回帰の平方和は「予測値の平方和」,全体の平方和は「yの平方和」

プログラムの出力に下手でさっぱりわけの分からない日本語訳の注が付いています(SPSS Release 6.1.2)。
曰く,

Note # 10572
原点(切片なしのモデル)の場合,R二乗は,回帰によって証明(ママ;「説明」のミスタイプだと思う)される原点について,yにおける変動性の割合を測定します。これは,切片を含むモデルのR二乗値とは,比較できません。

========== 引用終了

まあ,定義が違うのだから比較できるわけはないのですけどね。

R の summary.lm がやっていることを抜粋すると以下のようになります。
> func = function(z) { # R.squared を求める箇所
+ r = z$residuals
+ f = z$fitted.values
+ if (attr(z$terms, "intercept")) { # 切片のあり/なし判定
+ # 切片ありのモデル 予測値と予測値の平均値からの偏差の二乗和
+ mss = sum((f - mean(f))^2)
+ } else {
+ # 切片なしのモデル 予測値の二乗和(予測値と0からの偏差の二乗和)
+ mss = sum(f^2)
+ }
+ rss = sum(r^2) # 残差の二乗和
+ r.squared = mss/(mss + rss) # 決定係数
+ c(r.squared = r.squared, mss = mss, rss = rss)
+ }
>
> lm1 = lm(Sepal.Length ~ ., iris) # 切片あり
> summary(lm1)

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.17127 0.27979 7.760 1.43e-12
Sepal.Width 0.49589 0.08607 5.761 4.87e-08
Petal.Length 0.82924 0.06853 12.101 < 2e-16
Petal.Width -0.31516 0.15120 -2.084 0.03889
Speciesversicolor -0.72356 0.24017 -3.013 0.00306
Speciesvirginica -1.02350 0.33373 -3.067 0.00258

Residual standard error: 0.3068 on 144 degrees of freedom
Multiple R-squared: 0.8673, Adjusted R-squared: 0.8627
F-statistic: 188.3 on 5 and 144 DF, p-value: < 2.2e-16

> func(lm1)
r.squared mss rss
0.8673123 88.6118483 13.5564851

> lm0 = lm(Sepal.Length ~ . + 0, iris) # 切片なし
> summary(lm0)

Coefficients:
Estimate Std. Error t value Pr(>|t|)
Sepal.Width 0.49589 0.08607 5.761 4.87e-08
Petal.Length 0.82924 0.06853 12.101 < 2e-16
Petal.Width -0.31516 0.15120 -2.084 0.03889
Speciessetosa 2.17127 0.27979 7.760 1.43e-12
Speciesversicolor 1.44770 0.28149 5.143 8.68e-07
Speciesvirginica 1.14777 0.35356 3.246 0.00145

Residual standard error: 0.3068 on 144 degrees of freedom
Multiple R-squared: 0.9974, Adjusted R-squared: 0.9973
F-statistic: 9224 on 6 and 144 DF, p-value: < 2.2e-16

> func(lm0)
r.squared mss rss
0.9974049 5210.2935149 13.5564851

No.22157 Re: 重回帰での切片有り無しモデルについて  【青木繁伸】 2016/10/01(Sat) 20:58

うーーと。解説が必要なんでしょうか ?

切片なしのモデルの場合,R二乗は,回帰によって説明される,原点からのyの変動の割合を測定します

切片ありのモデルの場合,R二乗は,回帰によって説明される,平均値からのの変動の割合を測定します

No.22158 Re: 重回帰での切片有り無しモデルについて  【さくらとお城】 2016/10/03(Mon) 10:11

青木先生

 説明など,ありがとうございます。理解できていませんが,定義が異なるということは,よくわかりました。

 ありがとうございました

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