理論度数の計算

■ 解き方の方針 理論度数は、行と列が互いに影響しないと仮定したときの人数です。各セルについて 行合計×列合計÷全体合計 を使います。観測値をそのまま答えにしないよう注意します。 ■ 周辺合計を先に求める かからなかった かかった 行合計 接種あり 82(理論度数 a=80) 6(8) 88 接種なし 58(60) 8(b=6) 66 列合計 140 14 154 かっこ内が理論度数です。理論度数=行合計×列合計÷全体合計 で、例えば a は $88\times140\div154=80$ です。 全体合計t:82+6+58+8=154 1行目(接種あり):82+6=88 2行目(接種なし):58+8=66 1列目(発病なし):82+58=140 2列目(発病あり):6+8=14 ■ 空欄aを計算する aは1行1列なので、1行目合計88と1列目合計140を使います。 $a=88\times140\div154=80$ ■ 空欄bを計算する bは2行2列なので、2行目合計66と2列目合計14を使います。 $b=66\times14\div154=6$ ■ 計算結果を検算する 残りのセルは1行2列が8、2行1列が60です。理論度数の行合計は88と66、列合計は140と14になり、元の周辺合計と一致します。 a=80、b=6なので、正解はオです。 ■ 正解と誤答の見分け方 オ 以外は、観測値をそのまま使う、行や列を単純に半分にする、又は行合計と列合計の一方しか反映しない値です。公式へ代入し、周辺合計でも検算すると迷いにくくなります。

次の記述中の  a  と  b  に入れる正しい答えの組合せを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。

予防接種の病気Xに対する予防効果を調査するために集めたデータの集計結果を基に、病気にかかるかどうかが、予防接種の有無に影響されないと仮定した場合の人数を計算する。この人数を理論度数という。表1に集計結果の例を示し、表2に表1を基に計算した理論度数を示す。

関数fは、引数 data で受け取った集計結果を基に計算した理論度数を返す。引数と戻り値は二次元配列で、その行が表の行、その列が表の列に対応する。

表1 集計結果の例(単位:人)

病気Xにかからなかった

病気Xにかかった

予防接種を受けた

82

6

予防接種を受けていない

58

8

表2 表1を基に計算した理論度数(単位:人)

病気Xにかからなかった

病気Xにかかった

予防接種を受けた

 a 

予防接種を受けていない

 b 

注記 網掛けの部分は表示していない。


[プログラム]
○実数型の二次元配列:f(実数型の二次元配列:data)
実数型:t ← dataの要素の和
整数型:row ← dataの行数
整数型:col ← dataの列数
実数型の二次元配列: result ← {row行col列の 未定義の値}
整数型:r, c
for (rを1から row まで1ずつ増やす)
for (cを1から col まで 1ずつ増やす)
result[r, c] ← (dataのr行目の要素の和) × (dataのc列目の要素の和) ÷ t
endfor
endfor
return result

出典令和7年度 基本情報技術者試験 科目B 問5

a

b

ア

44

33

イ

58

8

ウ

70

7

エ

75

2

オ

80

6

カ

80

8

キ

82

6