この概念が出た関連問題

この試験の対策ガイド

基本情報技術者試験 対策ガイド

合格率・勉強法・参考書の選び方をまとめています

見る →
答えと解説を見る(先に解くのがおすすめ)

正解は オ

解説

カイ二乗検定の前準備として使われる理論度数(期待度数)の計算をプログラムで実装する問題です。理論度数とは「2つの要因が互いに独立(無関係)と仮定した場合に期待される度数」のことです。計算式:理論度数 = (行の合計 × 列の合計) ÷ 総数。予防接種の例で確認:予防接種あり・病気Xにかかった理論度数 = (予防接種あり総計 × 病気Xにかかった総計) ÷ 全体総計。プログラムの空欄では、この計算式をコードで表現する際の変数対応を問うています。正解はe(a=arrayM[i], b=arrayK[i], c=ordersの要素数)ではなく、問題の変数名に合わせた適切な対応です。関数fは二次元配列dataを受け取り、各セルの理論度数を計算して返します。外側ループが行(i)・内側ループが列(j)に対応し、各セルに「(行合計 × 列合計) ÷ 総数」を格納します。理論度数を理解することで、観測値と理論度数のずれ(カイ二乗値)を計算し、2つの要因に関連性があるかを統計的に検定できます。

なぜ他の選択肢は違うのか

選択肢 ア
選択肢aと同様に変数名が逆になっている組み合わせです。理論度数の計算式では「行合計 × 列合計 ÷ 総数」の対応関係を正確に把握する必要があります。プログラム内の変数がどの値(行合計/列合計/共起数)を表しているかを確認してください。
選択肢 イ
行の合計(Kx相当)と列の合計(Ky相当)の対応が逆または計算順序が誤っています。理論度数の計算では分子に「行合計 × 列合計」、分母に「全体総数」を使います。
選択肢 ウ
理論度数計算に用いる全体総数(分母)の参照先が誤っています。適切な変数(全注文数や全体の合計値を保持する変数)を参照する必要があります。
選択肢 エ
全体総数(分母)の参照先がallItemsの要素数(商品の種類数)になっており不適切です。全体総数はordersの要素数(注文の総数)が正しい参照先です。
選択肢 カ
otherItemsの要素数は対象商品以外の商品数であり、理論度数計算の分母(全体総数)として不適切です。

解くときのポイント

理論度数の公式:(行合計 × 列合計) ÷ 全体総数。プログラムトレースでは各変数がこの公式のどの要素に対応するかを丁寧に対応付ける。二次元配列のループはi(行)・j(列)の入れ子構造になっていることが多い。