はじめに
ChatGPT に質問しながら 2021 年の統計検定 1 級(統計応用・理工学)の問題を解いてみようと思います。
ChatGPT は補助的に使うだけで、使わなくても分かる問題についてはそのまま解きます。
確率の公式、統計の用語などは覚えていないことが多いので、その場合は積極的に質問していきます。
問題文は省略しています。適切なところで入手してください。(問題) (略解)
2022 年度はこちら:
https://qiita.com/taichan003/items/3eafd80bc6111697d5ac
問 1
ChatGPT への質問の全文はこちら:
https://chat.openai.com/share/f9de96fb-981d-4d21-b57b-5cdb320b3617
〔1〕
実験計画についての問題なので ChatGPT 先生の 1 番だけ確認する。
本問では実験順序に偏りがあるので順序効果が考慮に入れられていない。
〔2〕
赤池情報量基準という言葉を出したせいで回答が長い。。
ChatGPT に従い、すべてのパラメータを用いた線形モデル M15 から AIC が最も小さくなる変数を取り除くことを繰り返す。
まず「投法」を取り除き(M11)、次に「姿勢」を取り除く(M5)。これ以上取り除いても AIC は改善しないので M5 が最終的なモデルとなる。
\begin{align}
z = 3.496 - 1.658 \cdot 0 - 2.667 \cdot 1.5 = -0.5045
\end{align}
より、求める確率は
\begin{align}
P(Y = 1) = \frac{1}{1 + \exp(0.5045)}.
\end{align}
〔4〕
略解では ChatGPT のいうところの「1. データの性質・離散性」にのみ注目しているが「2. 分布の仮定」も納得感がある。
問 2
ChatGPT への質問の全文はこちら:
https://chat.openai.com/share/0b9687b9-191e-40c6-89a1-2e943fe6f992
〔1〕
ChatGPT の回答を改めて書き直す必要もないと思うけど、求める答えは
\begin{align}
y_{ijk} = \mu + \alpha_i + \beta_j + (\alpha\beta)_{ij} + \varepsilon_{ijk}.
\end{align}
〔2〕
工程 A を 3 分割して工程 B をそれぞれに対して行えるわけではないの?
それなら工程 A が必要となる回数は 5 * 2 = 10 回だと思うが、略解を見ると違うらしい。
ChatGPT に聞けばいいように思うかもだけど、今の自分の使い方だとだいたいの方向を分かったうえで誘導しているので納得していない答えの説明をさせても信頼がおけない。
・・・と思っていたけど〔4〕との比較で少しわかった気がする。ChatGPT の回答は〔4〕にて。
〔3〕
この問題のポイントは 1 次誤差が 2 次因子に影響を受けないということだと思うのだけど、どうにもこれに気づいてくれないのでこちらで軌道修正した。なんかうまくいかないなあ。。
求める答えは、
\begin{align}
y_{ijk} = \mu + \alpha_i + \beta_j + \rho_k + (\alpha\beta)_{ij} + \varepsilon_{(1)ik} + \varepsilon_{(2)ijk}.
\end{align}
〔4〕
〔2〕での完全無作為化実験は、工程 A による誤差を工程 B に影響させないためにすべての実験で独立に工程 A を行う必要があるらしい。
〔5〕
略解を見ると分散分析表に必要ない項目($A \times R$, $B \times R$, $A \times B \times R$)の平方和が分かっているのでこれらを誤差項に押し付けていいみたい。このことを ChatGPT に天下り的に伝えて分散分析表を作ってもらった。
いろいろ試したけど、この考え方をイチから ChatGPT に提案させるのはできなかった。
要因/交互作用 | 平方和 | 自由度 | 平均平方和 | F 値 | 臨界 F 値 |
---|---|---|---|---|---|
工程A (A) | 763.90 | 4 | 190.975 | 11.781 | 6.39 |
工程B (B) | 155.22 | 2 | 77.61 | 41.906 | 4.10 |
繰り返し (R) | 81.68 | 1 | 81.68 | 5.039 | 7.71 |
A*B | 8.95 | 8 | 1.11875 | 0.604 | 3.07 |
A*R (1次誤差) | 64.84 | 4 | 16.21 | - | - |
B*R, A*B*R (2次誤差) | 18.52 | 10 | 1.852 | - | - |
合計 | 1093.11 | 29 | - | - | - |
続いて有意性検定を行う。
ChatGPT 先生のご指示に基づいて上の表にクリティカル F 値の列を追加した。
計算した F 値と比較して、A,B の主効果が 5% 有意であることが分かる。略解では 1 次誤差の有意性も検定しているけど、普通に意味が分からないので無視。
〔6〕
ChatGPT を使っているとこの手の説明問題で頭を使う気がなくなってくる。わたしよりよっぽど日本語もうまいし。
一応答えとしてまとめる。
繰り返し回数 2 回としたときの分割実験に必要な鋼材は 3000 kg、2 因子完全無作為化実験の 9000 kg となっていて、分割実験は必要なサンプルサイズが小さくて済む。一方で分割実験は 1次誤差の自由度が小さくなるため 1 次要因の効果の検出力が低下する可能性がある。
問 3
計算がほとんどのため ChatGPT をがっつりと使うのは最後の問題だけ。それ以外の問題でも公式の確認とかはさせてもらった。
ChatGPT への質問の全文はこちら:
https://chat.openai.com/share/d6c1c8b0-41ed-413c-8524-c0bccc7dc256
〔1〕尤度関数の定義に従うだけ。
\begin{align}
L(\alpha, \beta | Y) = \prod_{i=1}^{n} P(y_i | \alpha, \beta)
= \prod_{i=1}^{n}
\Phi(\alpha + \beta x_i)^{y_i} (1 - \Phi(\alpha + \beta x_i) )^{1 - y_i}
\end{align}
〔2〕
\begin{align}
P(Z_i > 0) &= P(Y_i = 1) = \Phi(\alpha + \beta x_i) \\
&= 1 - \Phi(-\mu_i) = \Phi(\mu_i).
\end{align}
また $\Phi$ は狭義単調増加であり
\begin{align}
\Phi(w) = \Phi(w') \ \Leftrightarrow \ w = w'
\end{align}
となることから $\mu_i = \alpha + \beta x_i$ が成立する。
〔3〕ベイズの定理によって事後確率を求めればいい。
下式 $C$ は正規化定数で、$\alpha, \beta$ について積分したら $1$ となるように定める。$C$ は各行ごとに値は異なる。
\begin{align}
f(\alpha, \beta | Z) &= \frac{f(Z | \alpha, \beta) f(\alpha)f(\beta)}{f(Z)} \\
&= \frac{1}{C}
\left\{\prod_{i=1}^n\frac{1}{\sqrt{2\pi}}\exp \left(-\frac{(z_i - \alpha - \beta x_i)^2}{2} \right) \right\}
\frac{1}{2\pi}\exp \left(-\frac{\alpha^2}{2} -\frac{\beta^2}{2} \right) \\
&= \frac{1}{C} \
\exp \left( - \sum_{i=1}^n \frac{(z_i - \alpha - \beta x_i)^2}{2} -\frac{\alpha^2}{2} -\frac{\beta^2}{2} \right) \\
&= \frac{1}{C} \
\exp \left( - \frac{ n \alpha^2 + \left(\sum x_i ^ 2 \right)\beta^2 - 2 \left( \sum z_i \right) \alpha - 2 \left( \sum z_ix_i \right) \beta}{2} -\frac{\alpha^2}{2} -\frac{\beta^2}{2} \right) \\
&= \frac{1}{C} \
\exp \left( - \frac{n + 1}{2} \left( \alpha - \frac{\sum z_i}{n+1} \right)^2 - \frac{\sum x_i^{2} + 1}{2} \left( \beta - \frac{ \sum z_i x_i}{\sum x_i^{2} + 1} \right)^2 \right)
\end{align}
式変形は大変だけど、$\alpha, \beta$ の関数なので関係ない項は正規化定数 $C$ に押し付けてしまえることと、$\sum x_i =0$ を利用してがんばる。
得られた式から、$\alpha$ と $\beta$ は独立で、それぞれ
\begin{align}
&\alpha \sim N \left(\frac{\sum z_i}{n+1}, \frac{1}{n+1} \right) \\
&\beta \sim N \left(\frac{ \sum z_i x_i}{\sum x_i^{2} + 1}, \frac{1}{\sum x_i^{2} + 1} \right)
\end{align}
に従うことが分かる。
〔4〕状況が複雑すぎると思ったが、ChatGPT が全部教えてくれた。すごい
2番の手順は危ないので $y_1, \cdots , y_n$ は既知であることとかは改めて伝える。
- $\alpha,\beta$ をてきとうに生成
- $Z_i \sim N(\alpha + \beta x_i)$ に従って発生させる。
- $y_i = 1$ なら $Z_i \geq 0$、$y_i = 0$ なら $Z_i < 0$ となるか確認する。違ったら発生させた $Z_i$ を棄却し、2番をやり直す。
- 前問[3]より、得られた $Z_1, \cdots , Z_n$ の条件のもとでの $\alpha,\beta$ は正規分布に従う。これにより $\alpha,\beta$ を発生させる。
- 2 ~ 4 を繰り返す。
以上を十分な回数繰り返して、手順 4 によって得られた $\alpha,\beta$ は期待する事後分布に従う。
問 4
ChatGPT への質問の全文はこちら:
https://chat.openai.com/share/bb642efc-77f0-4550-8083-30f3cb9c7a5b
〔1〕決定木の読み方を習ったことはないと思うけど、なんとなく分かる。
$Y$ が 69 以下かつ $X$ が 81 以下の製品は準良品と判定される。
〔2-1〕
Gini 指標の定義から、$\sum p_k^2$ の最大値・最小値が分かればよい:
\begin{align}
\text{Gini} = 1 - \sum_{k=1}^K p_k^2.
\end{align}
一般に、$a > 0, \ b > 0, \ a + b = c$($c$は定数)のとき、
\begin{align}
\frac{3}{4}c^2 \leq a^2 + b^2 = \left(a - \frac{c}{2} \right)^2 + \frac{3}{4}c^2 \leq c^2
\end{align}
が成立し、下限の等号成立は$a = b$のとき、上限は$a=0, \ c$のとき。
これを帰納的に繰り返して $p_k > 0, \ \sum p_k = 1$ のとき、
\begin{align}
\frac{1}{K} \leq \sum_{k=1}^K p_k^2 \leq 1
\end{align}
が成立し、下限の等号成立は$p_k = 1/K, \ \forall k$ のとき、上限はいずれかの$p_k$ が1, それ以外が 0 のとき。
〔2-2〕問題の意味が分からなかったけど ChatGPT 先生の解説でようやく分かった。
〔2-3〕良品20個、準良品30個の Gini 指標は $\text{Gini} = 1 - \left( \frac{30}{50} \right)^2 - \left( \frac{20}{50} \right)^2 = 0.48$ となる。
〔3〕前問より最初の Gini 指標は 0.48 となる。
X を基準に分割した場合の Gini 指標は
\begin{align}
\text{(Gini)}_X = \frac{40}{50} \cdot \left\{ 1 - \left( \frac{30}{40} \right)^2 - \left( \frac{10}{40} \right)^2 \right\} + \frac{10}{50} \cdot 0 = 0.3
\end{align}
であり、$\text{(Gain)}_X = 0.48 - 0.3 = 0.18$ となる。
同様に、Y を基準に分割した場合は
\begin{align}
\text{(Gini)}_Y = \frac{35}{50} \cdot \left\{ 1 - \left( \frac{30}{35} \right)^2 - \left( \frac{5}{35} \right)^2 \right\} + \frac{15}{50} \cdot 0 = 0.1714
\end{align}
で、$\text{(Gain)}_Y = 0.3086$ となる。
どちらの分割でも Gain は正値をとるが、Y を基準としたほうが分割効率がよいと言える。
問 5
時期的に考えて、疾病の擬陽性・偽陰性の話題がやりたかっただけでしょ笑
問題の難易度はだいぶ低く、ChatGPT を使うようなことはとくにない。
〔1〕$Z\sim N(0,1)$ は標準正規分布として、正規分布表を参照する。
\begin{align}
P(+|T) &= P(X_T > c) = P\left(Z > \frac{c - \mu_T}{\sigma_T} \right) = P(Z > - 1.0) = 0.8413 \\
P(-|F) &= P(X_F \leq c) = P\left(Z \leq \frac{c - \mu_T}{\sigma_F} \right) = P(Z \leq 1.5) = 0.9332
\end{align}
〔2〕ベイズの定理に前問の数値を代入して答えが得られる。
\begin{align}
P(T|+) &= \frac{P(+|T)P(T)}{P(+)} = \frac{P(+|T) \cdot p}{P(+|T)p + (1 - P(-|F))(1-p)} = 0.1129 \\
P(F|-) &= \frac{P(-|F)P(F)}{P(-)} = \frac{P(-|F) \cdot (1 - p)}{P(-|F)(1 - p) + (1 - P(+|T))p} = 0.9983
\end{align}
〔3〕感度が 0.95 のとき、
\begin{align}
P(+|T) &= P(X_T > c) = P\left(Z > \frac{c - \mu_T}{\sigma_T} \right) = 0.95.
\end{align}
正規分布表から $\frac{c - \mu_T}{\sigma_T} = - 1.65 \Leftrightarrow c = 6.7$ を閾値とすればよい。
また、このときの特異度は
\begin{align}
P(-|F) = P(X_F \leq c) = P\left(Z \leq 0.85 \right) = 0.8023.
\end{align}
〔4〕前問と同様に、感度が 0.95 のとき、$\frac{c - \mu_T}{\sigma} = - 1.65$ が必要。
また、特異度から $\frac{c - \mu_F}{\sigma} = 1.65$ となることとあわせて、
\begin{align}
c = 7.5, \ \sigma = 1.515
\end{align}
が得られる。
〔5〕説明問題なので ChatGPT が得意そうだが、問題文をそのまま入れただけだと陽性的中率までもが 100% とか言い出す。あいまいな質問をしても文脈から補完していい感じの回答をしてくれるのが ChatGPT のうれしいところだが、ここでは裏目に出ている。
略解通りでいいと思う。
感度はほぼ 1 であるので偽陰性率は小さいが、偽陽性率も小さく陽性的中率が大きいとは結論できない。偽陽性のコストがそう小さくない場合には、問題が生じる可能性が大きい。