70679
3剤3期クロスオーバーの分散分析を、Rで実行しました（以下Rプログラム）。  
この分散分析表の誤差「8.5089」をエクセルで算出したいのですが、結果が合いません。（誤差以外は検算できました）  
以下に、エクセルの画像を添付しました。  
どこの解釈が違うのか、どなたかアドバイスをお願いしてもよろしいでしょうか。  
※データは「医薬品開発のための統計解析 第2部p.282」です。

※ [同じ質問を teratail でも質問中です](https://teratail.com/questions/286339) 。

```

    group<-factor(c(c(rep(1,9)),c(rep(2,9)),c(rep(3,9))))
    id<-factor(rep(1:9, each=3))
    period<-factor(rep(c(1,2,3),9))
    treat<-factor(c(rep(c(1,2,3),3),rep(c(3,1,2),3),rep(c(2,3,1),3)))
    y<-c(7.2,6.6,7.9,8.4,8,7.1,9.2,10.7,8.8,7.9,8.2,9.2,7.8,9.7,10.1,6,9.4,10.2,5.6,6.8,9.2,6.4,6.2,8.6,7.3,7.3,9.5)
    (anova<-anova(lm(y~group+treat+id*group+period)))
    
    #          Df  Sum Sq Mean Sq F value   Pr(>F)   
    #group      2  7.5822  3.7911  6.2377 0.011561 * 
    #treat      2 10.4422  5.2211  8.5905 0.003678 **
    #id         6 11.4978  1.9163  3.1530 0.035919 * 
    #period     2 12.1756  6.0878 10.0165 0.001993 **
    #Residuals 14  8.5089  0.6078
    
    #Residualsの「8.5089」をエクセルで計算したい。 
    
```

[![エクセル](https://i.stack.imgur.com/p0ZF1.png)](https://i.stack.imgur.com/p0ZF1.png)

各データの残差の2乗の合計（Residualsの平方和）が「8.5089」になるはずが「7.29」になっている。

### 個人差の計算式

例えば、g1,id1の個人差-0.98  
7.23-8.21=-0.98

### 残差の計算式

例えば、g1,id1,period1の7.2に当たる残差-0.09  
7.2-(8.27+(-0.98))=-0.09

※以下追記します。  
2剤2期クロスオーバーの分散分析では同様の方法で算出しました。  
3剤3期クロスオーバーの分散分析では同様の方法では算出できないのでしょうか。  
[![エクセル2](https://i.stack.imgur.com/mN7Ia.png)](https://i.stack.imgur.com/mN7Ia.png)
CC BY-SA 4.0
2020-08-22T08:00:50.723
69776
2020-09-25T14:33:27.250
2020-08-30T00:37:51.260
37329
37329
question
アルゴリズム r excel
3剤3期クロスオーバーの分散分析：誤差をエクセルで算出したい
`lm()`部分の結果を見てみますと、多くの変数で回帰係数がNAとなっています。

```

    summary(lm(y ~ group + treat + id * group + period))
    
```

```

    Call:
    lm(formula = y ~ group + treat + id * group + period)
    
    Residuals:
        Min      1Q  Median      3Q     Max 
    -0.9111 -0.2167  0.0000  0.3278  1.0889 
    
    Coefficients: (18 not defined because of singularities)
                Estimate Std. Error t value Pr(>|t|)    
    (Intercept)   7.1222     0.5410  13.166 2.82e-09 ***
    group2        1.3000     0.6365   2.042 0.060429 .  
    group3        0.8000     0.6365   1.257 0.229394    
    treat2       -0.5889     0.3675  -1.602 0.131386    
    treat3       -1.5111     0.3675  -4.112 0.001058 ** 
    id2           0.6000     0.6365   0.943 0.361871    
    id3           2.3333     0.6365   3.666 0.002545 ** 
    id4          -0.1000     0.6365  -0.157 0.877410    
    id5           0.6667     0.6365   1.047 0.312695    
    id6               NA         NA      NA       NA    
    id7          -0.8333     0.6365  -1.309 0.211562    
    id8          -0.9667     0.6365  -1.519 0.151113    
    id9               NA         NA      NA       NA    
    period2       0.7889     0.3675   2.147 0.049832 *  
    period3       1.6444     0.3675   4.475 0.000524 ***
    group2:id2        NA         NA      NA       NA    
    group3:id2        NA         NA      NA       NA    
    group2:id3        NA         NA      NA       NA    
    group3:id3        NA         NA      NA       NA    
    group2:id4        NA         NA      NA       NA    
    group3:id4        NA         NA      NA       NA    
    group2:id5        NA         NA      NA       NA    
    group3:id5        NA         NA      NA       NA    
    group2:id6        NA         NA      NA       NA    
    group3:id6        NA         NA      NA       NA    
    group2:id7        NA         NA      NA       NA    
    group3:id7        NA         NA      NA       NA    
    group2:id8        NA         NA      NA       NA    
    group3:id8        NA         NA      NA       NA    
    group2:id9        NA         NA      NA       NA    
    group3:id9        NA         NA      NA       NA    
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    
    Residual standard error: 0.7796 on 14 degrees of freedom
    Multiple R-squared:  0.8305,    Adjusted R-squared:  0.6853 
    F-statistic: 5.717 on 12 and 14 DF,  p-value: 0.001433
    
```

NAとなる理由は、これらを説明変数として使用できないためです。たとえば、ダミー変数`group2:id2`や`group3:id2`などは、すべてのエントリーが0となります。また、`id6`と`group2:id6`は、どちらも16番目～18番目のエントリーが1、それ以外は0となるため、この2つの変数を判別することができません。

変数をダミー化し、上で回帰係数がNAとなっている変数を除いてから、Excelの分析ツールで回帰分析を実施したところ、分散分析表で残差の変動は`8.50888...`となっていました。

Excelでの再現手順は以下のようになります。（※これは純粋にご質問にあるR関数がやっているのと同じことをExcelで再現するための手順として紹介するもので、問題の解法として正しいかどうかという判断はしておりません。また、統計学的に正確でない表現が含まれるかもしれません。何卒ご承知ください。）

まず、各変数をダミー変数化します。ダミー変数化とは、カテゴリ変数を0と1の2値で表現される変数に変換することです。たとえば、`treat`をダミー変数化すると以下のようになります。

[![ダミー変数化](https://i.stack.imgur.com/6PRLw.png)](https://i.stack.imgur.com/6PRLw.png)

元の変数のカテゴリ数がN個の場合、1つを基準カテゴリーとし、残りのN-1個のカテゴリーをダミー変数化します。上の例では`treat1`が基準変数となり、すべての`treat`変数が0の場合、そのカテゴリは`treat1`ということになります。このようにすることで多重共線性を避けることができます。

同様に、`group`、`id`、`period`もそれぞれダミー変数化します。

また、このモデルには`id`と`group`の交互作用が含まれています。これは、`group_N`と`id_M`のすべての組み合わせを掛け合わせることで得られます。ここまでの作業で以下のような状態になっています。

[![中間結果1](https://i.stack.imgur.com/QkrVC.png)](https://i.stack.imgur.com/QkrVC.png)

次に、不要な変数を削除します。たとえば、`group2:id2`などは、値がすべて0であり観測値間の違いを説明していないため不要です。また、`id4`と`group2:id4`などは、まったく同じ値であるため、1つは不要です。さらに、`id4`、`id5`、`id6`および`group2`を注意深く見ると、これらの`id`は`group2`のサブグループであり、どれか2つの`id`の値が0の場合、残り1つの`id`の値が1となることが自明であるため`id6`を削除します。同様に`id9`も消えます。

このようにして不要な変数を削除していった結果、残った変数は以下のようになります。先の`lm()`の出力結果で回帰係数がNAでない変数と一致していることをご確認ください。

[![中間結果2](https://i.stack.imgur.com/QRnB1.png)](https://i.stack.imgur.com/QRnB1.png)

このデータに対して、Excel標準の「分析ツール」アドインで回帰分析を実行します。するとご覧のとおり、残差の変動がRの出力と同じ値になることを確認できます。

[![最終結果](https://i.stack.imgur.com/rT4lU.png)](https://i.stack.imgur.com/rT4lU.png)
CC BY-SA 4.0
2020-09-25T01:47:32.313
70679
2020-09-25T14:33:27.250
2020-09-25T14:33:27.250
36398
36398
69776
answer