激凹みから立ち直る方法

統計学、とりわけ実験計画法の「枝分かれ実験」に詳しい方に質問です。

素人ながら実験計画法の習得を目指しています。
添付画像の左にあるような4段の枝分かれ実験を行いました。A1からB1,B2に、B1からC1,C2に枝分かれしていくイメージです。

ひとまず、あるHPで見た手順に従って計算していったところ、なぜか要因Aの分散の期待値がマイナスになってしまいました。

どこかに間違いがあるはずなのですが、今のところ辿り着きません。正しい計算方法についてご教授ください。

「統計学、とりわけ実験計画法の「枝分かれ実」の質問画像

A 回答 (9件)

原因が分かりました。



このデータが特殊で、A,B,C,D主効果より、AB交互作用、BC交互作用が異常なほど大きいのです。
(分散分析表は一番下にあります)

そのため、枝分かれ実験では、次のような奇妙な現象を生んでしまいます。

① A因子はAB交互作用を生んでいるハズで、総合的には効果大なのですが、大きなAB交互作用は「枝分かれ実験の性質上」、B因子の効果に繰り入れられて、A因子がかき消されます。

② 次にA因子を単純繰り返しにして実験から取り除くと、B因子の効果が出てくるハズなのですが、B因子が生んでいる大きなBC交互作用は、これまたC因子の効果に繰り入れられて、B因子がかき消されます。

この先、C→D→Mをやっても、今度はD因子の主効果がC因子の主効果に比べ大きい為に、結局D因子にしか効果が見られないという結果になるでしょう。

【Rによる通常の分散分析結果(全ての2因子交互作用あり)】

> df <- data.frame(matrix(c(
+ 1, 1, 1, 1, 18.82,
+ 1, 1, 1, 2, 5.91,
+ 1, 1, 2, 1, 5.34,
+ 1, 1, 2, 2, 5.15,
+ 1, 2, 1, 1, 8.15,
+ 1, 2, 1, 2, 8.39,
+ 1, 2, 2, 1, 17.43,
+ 1, 2, 2, 2, 11.53,
+ 2, 1, 1, 1, 16.43,
+ 2, 1, 1, 2, 13.84,
+ 2, 1, 2, 1, 12.34,
+ 2, 1, 2, 2, 12.32,
+ 2, 2, 1, 1, 8.11,
+ 2, 2, 1, 2, 8.18,
+ 2, 2, 2, 1, 10.29,
+ 2, 2, 2, 2, 5.00),
+ ncol = 5, byrow = T))
>
> colnames(df) <- c("A", "B", "C", "D", "y")
>
> A <- as.factor(df$A)
> B <- as.factor(df$B)
> C <- as.factor(df$C)
> D <- as.factor(df$D)
> y <- as.numeric(df$y)
>
> summary(aov(y ~ A + B + C + D + A:B + A:C + A:D + B:C + B:D + C:D))

  Df Sum Sq Mean Sq F value Pr(>F)
 A 1  2.10  2.10  0.111 0.753
 B 1 10.68  10.68  0.565 0.486
 C 1  4.44  4.44  0.235 0.648
 D 1 44.19  44.19  2.338 0.187
A:B 1 70.69  70.69  3.740 0.111
A:C 1  1.43  1.43  0.076 0.794
A:D 1  7.47  7.47  0.395 0.557
B:C 1 61.11  61.11  3.233 0.132
B:D 1  1.46  1.46  0.077 0.792
C:D 1  0.90  0.90  0.047 0.836
Res 5 94.51  18.90
    • good
    • 1

> 要因効果として見込めないためプールすれば良いとのことで再計算していますが・・・、



長畑秀和先生のテキストの枝分かれ実験の項を見ますと、効果の無い因子は「単純繰り返し:M」という扱いをすれば良いことが分かります。
ご質問者様も、たぶんそうされたと思います。

B→C→D→M です。

ところが、やってみたら、なんとB因子も「効果が見られない」になってしまいますね。

これについては、私も面喰っています。
吟味してみます。
    • good
    • 0

stomachman様、ご指摘ありがとうございます。



実験は、一般的に「特性変動の要因を解析をしたい」という目的で行われる場合が多いです。
このとき、ご指摘のとおり、取り上げなかった要因があれば、全体の寄与率が低い、というか誤差の寄与率が50%を超えていて、現象の全体像を説明しきれていない(たとえ有意な因子があったとしても真因は未だ闇の中である)、という問題が生じ得ます。

この実験の分散分析表は、偶然誤差を基準に検定します。


一方、それとは異なる実験もあります。

タイヤの摩耗量を把握するため、設定条件を振って測定したい、というような実験です。このときは、考慮したい条件しか取り上げません。もちろん、他の温度など5M1Eの系統誤差は一定となるよう管理する必要があります。

実験は、「用意する車両→位置(1,2,3,4)→タイヤメーカー」というように、枝分かれ的に条件を与えていきます。用意する車両と取り付け位置には、明らかに交互作用があり、摩耗量に影響を与えます。

Yijk = Ai + Bij + Cijk

というような添え字の付いたモデルを考えます。+ε は考えません※。分散分析表も、それを考慮して作る必要があります。

例えば、取り付け位置Bより車両Aの影響の方が有意に大きいかどうかという検討をしたいとき、検定は、Aを誤差で検定するのではなく、AをBで検定します。

これが枝分かれ実験の特徴です。

※ 実験の形は「繰り返しの無い三元配置」と同じで、一般的には二因子交互作用まで検出できますが、枝分かれ実験では三因子交互作用まで考えますので、誤差の自由度が無くなります。
    • good
    • 0
この回答へのお礼

kamiyasiro様、stomachman様
高いレベルで議論いただき、私が質問者にもかかわらずただただ横から勉強させていただいています。ありがとうございます。

さて、要因効果として見込めないためプールすれば良いとのことで再計算していますが、早速つまづいています。本件の場合、因子Aは因子D(A:B:C:D)にプールすべきでしょうか?それとも因子B(因子A:B)にプールすべきでしょうか?

不勉強でとてもとても反省です。
申し訳ありませんが再度教えてもらえるとうれしいです。

お礼日時:2024/09/17 11:53

No.1,2です。

専門家に怒られちゃいましたが、No.3の「対処法」なるものの意味付けがまだわからんです。「分散の期待値」がそれぞれの要因の分散の重み付きの和で表せるという仮定が破綻している場合ってのは、考慮していない要因があるか、あるいは現象を要因の線形和では近似できないか、だと思ってました。
    • good
    • 0
この回答へのお礼

ありがとうございます。
上のコメントにstomachman様へのお礼も書かせて頂きました。

お礼日時:2024/09/17 11:54

No.4です。



「枝分かれ実験の分散分析表は、面倒な計算をしなくても多元配置実験の分散分析表を変形して作ることができます。」と書きました。

なんと、ピッタリな動画↓を見つけました。
既にご存じだったかもしれませんね。



てか、Rの出力、平均平方の計算結果は、

> summary(aov(y ~ A / B / C / D))
_____Df Sum Sq Mean Sq
A     1  2.10  2.10
A:B    2 81.36 40.68
A:B:C   4 97.38 24.34
A:B:C:D  8 118.13 14.77

なんですが、因子はA,B,C,Dではなく、A:B・・・なんですよね。
Rの表記のA:Bは、AB交互作用の意味なんです。


追伸、
私はRでやってしまうので、平均平方の計算をまともにやったことがありませんでした。
そもそも、平均平方の計算があんなに面倒だったとは、関連動画を見るまで知りませんでした。

枝分かれ実験の分散分析表は、動画にある「裏技」の表で分散成分を習いました。

また、下位の分散を基準に検定することまでしか習っていませんでした。
ですから、平均平方の期待値の計算を知りませんでした。

ご質問者様のおかげで、勉強になりました。
    • good
    • 0
この回答へのお礼

こちらも大変勉強になりました。
たとえば要因B行の分散の期待値にはC、Dの分散成分が含まれているのに、平均平方はVBと表して計算を進めることに少し違和感をもっていました。
そもそも要因Bの平均平方ではなく、要因BCDの平均平方と考えたらなんとなくすっきりした気がします。
まだまだ勉強が必要です笑 先のご回答ともあわせて、ありがとうございます。

お礼日時:2024/09/13 08:21

あと、枝分かれ実験は、「A, B, C, Dがそれぞれ独立に測定値に効果をもたらす」とは考えていません。

それは多元配置実験です。
この点、No.1様の回答はちょっとヘンです。悪しからず。

枝分かれ実験や分割実験は、下位の因子は上位の因子の水準の影響を受けると考えられるときに用いる実験です。
下位に行けば行くほど、上位との交互作用を取り込んだ変動となります。

ですから、枝分かれ実験の分散分析表は、面倒な計算をしなくても多元配置実験の分散分析表を変形して作ることができます。
    • good
    • 0

計算間違いはありません。

確かに計算は合っています。
(下記はRで行った結果です。分散の期待値は一番下に結果があります)

こういう時の対処法は、Aの平均平方2.10が他より小さい時点で、Aの効果は無いと分かるので、誤差にプールすれば良いです。つまり、B→C→Dの枝分かれ実験として処理すれば良いです。

> # 教えてgoo!の事例
>
> df <- data.frame(matrix(c(
+ 1, 1, 1, 1, 18.82,
+ 1, 1, 1, 2, 5.91,
+ 1, 1, 2, 1, 5.34,
+ 1, 1, 2, 2, 5.15,
+ 1, 2, 1, 1, 8.15,
+ 1, 2, 1, 2, 8.39,
+ 1, 2, 2, 1, 17.43,
+ 1, 2, 2, 2, 11.53,
+ 2, 1, 1, 1, 16.43,
+ 2, 1, 1, 2, 13.84,
+ 2, 1, 2, 1, 12.34,
+ 2, 1, 2, 2, 12.32,
+ 2, 2, 1, 1, 8.11,
+ 2, 2, 1, 2, 8.18,
+ 2, 2, 2, 1, 10.29,
+ 2, 2, 2, 2, 5.00),
+ ncol = 5, byrow = T))
>
> colnames(df) <- c("A", "B", "C", "D", "y")
>
> A <- as.factor(df$A)
> B <- as.factor(df$B)
> C <- as.factor(df$C)
> D <- as.factor(df$D)
> y <- as.numeric(df$y)
>
> summary(aov(y ~ A / B / C / D))
Df Sum Sq Mean Sq
A     1  2.10  2.10
A:B    2 81.36 40.68
A:B:C   4 97.38 24.34
A:B:C:D  8 118.13 14.77
>
> a <- summary(aov(y ~ A / B / C))
> phi_A <- do.call(rbind, a)[1,1]
> phi_B <- do.call(rbind, a)[2,1]
> phi_C <- do.call(rbind, a)[3,1]
> phi_D <- do.call(rbind, a)[4,1]
>
> var_A <- (do.call(rbind, a)[1,3] - do.call(rbind, a)[2,3]) / phi_D
> var_B <- (do.call(rbind, a)[2,3] - do.call(rbind, a)[3,3]) / phi_C
> var_C <- (do.call(rbind, a)[3,3] - do.call(rbind, a)[4,3]) / phi_B
> var_D <- do.call(rbind, a)[4,3]
>
> var_A
[1] -4.823256
> var_B
[1] 4.084294
> var_C
[1] 4.78865
> var_D
[1] 14.76683
    • good
    • 0
この回答へのお礼

ありがとうございます!
そもそも計算が違っていないか不安だったので確認いただき大変ありがたいです。

お礼日時:2024/09/13 08:16

実験計画法や重回帰分析が活用できる典型的な場面と言えば、品質の最適化や管理ですね。

製造工程で調節できるパラメータがいくつかあるとき、それぞれのパラメータをどう設定すると目的とするコトが最適になるか、各パラメータについて、最適状態からのズレがどのぐらいの範囲に入れば、目的とするコトを妨げないか。要するに、目的とするコトはすでに大体実現できている、という状況における最後のファインチューニングの段階です。どのパラメータもいじる程度はわずかであることが想定され、また、いじる範囲が、「ある値を超えたら全くダメになってしまう」というようなクリティカルなポイントを含んでいない。そうすると、パラメータをいじる程度とその影響との間の関係は1次式でよく近似できるだろう。
 実験計画法では「制御できるパラメータの設定の組み合わせをシステマティックに網羅するために、なるべく少ない回数の実験で済ませるにはどうするか」を考える。枝分かれ実験を全部やるんじゃなく、直交変換(例えば離散フーリエ変換やアダマール変換)を利用して、複数のパラメータの変更をミックスするわけですが、それはパラメータが目的とするコトに与える影響が(いじる範囲の内であれば)精密に1次式で表せる、ということが前提できる場合にだけ意味を持つ。
 この前提、現実には精密に成り立つわけではなく、「実験計画法を使ってみたら訳わかんないデータが出ちゃった」なんてことにもなりかねない。それは、非線形効果が無視できない、すなわちパラメータをいじる程度とその影響との間の関係は2次以上の項を使わないとよく近似できない、ということです。

 最も簡単な場合としてパラメータがx, yの二つ、目的がE(x,y)だとして、
  E(x,y) = ε + a[0,0] + a[1,0]x + a[0,1]y + a[2,0]x² + a[1,1]xy + a[0,2]y² + a[3,0]x³ + a[2,1]x²y + a[1,2]xy² + a[0,3]y³ + ....... (ただしε はランダムな変動)
と展開した時のa[2,0]以降の部分が「2次以上の項」です。
 こういう状況で、E(x,y)を最大にする、という問題をどう扱うか。|ε|が小さいとき(もちろん、同じ状態で何度も実験して平均をとれば|ε|を小さくできる)非線形の極値探索(非線形最小二乗法)のアルゴリズムを直接利用する方が良いでしょう。すなわち、実験の結果に基づいて次にどんな実験をするかを決めるわけです。
 そういう探索をやった結果、パラメータの設定範囲がかなり絞られた段階に至ると、ようやく、2次以上の項の影響がほぼ無視できる状態、すなわち
  E(x₀+Δx,y₀+Δy) ≒ ε + b[0,0] + b[1,0]Δx + b[0,1]Δy
となっているでしょう。そこでいよいよ最後のファインチューニング。それには実験計画法が使えるかもしれない。
    • good
    • 0
この回答へのお礼

詳細にありがとうございます。
回答者様のアドバイスを理解できるよう、勉強を進めたいと思います!

お礼日時:2024/09/13 08:13

元々が「A, B, C, Dがそれぞれ独立に(他がどうなっているかに関係なく)測定値に一定の効果をもたらす」という仮定が前提になっている話です。

その仮定が成り立っていないってことでしょうね。
 例えばNo.1とNo.2、あるいはNo.15とNo.16を比べると、どうもDが大きな違いをもたらしているようですが、No.3とNo.4、あるいはNo.13とNo.14ではDによる違いは認められない。となると、Dの効果はA,B,Cがどうなっているか(あるいは見落としている別の要因がどうなっているか)に依存しているのかもしれない。もしそういう相互作用があるなら、上記の仮定は成り立っていないということです。
    • good
    • 1
この回答へのお礼

回答有難うごさいます
ということは分散分析表から分散の推定値を求めた結果がマイナスになることは(計算上は)あり得るということなんですか。
それでマイナスになったら要因ごとの効果の独立を疑うということで合ってますか?

もしこの手の記述に詳しい文献あれば教えてほしいです。

お礼日時:2024/09/06 23:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A