クロス集計とは

クロス集計とは 複数の項目(変数)を掛けあわせて集計する 手法です。分割表とも言います。

ナンバーズでは例えば、単純な 度数分布表 では抽せん数字の当せん回数を数え上げるだけだったが、 クロス集計では「抽せん数字の曜日別の当せん回数」、「抽せん数字の日付別の当せん回数」といった具合に 項目を掛けあわせた分析に使います。

ナンバーズの予想に使うには

クロス集計表の特徴そのままで、複数の項目の関係を分析するために利用します。

クロス集計の例 (2つの変数を掛けあわせる)

100の位と10の位について、数字が同時に出現した回数を求めます。

「100の位に 0 が出現したとき、10の位で 9 が出現した回数は?」というのを分析します。

第1回から第4170回の抽せん数字で集計してみた結果が下記になります。

python のプログラムは 前準備 で用意したデータフレームを使っています。

crosstab2 = pd.crosstab(df.place100, df.place10)
crosstab2
# crosstab2 の内容
place10     0       1       2       3       4       5       6       7       8       9
place100
0           35      37      32      40      49      35      42      37      39      43
1           37      37      34      36      34      40      53      43      44      62
2           38      38      53      58      32      41      41      48      35      39
3           54      45      28      46      35      44      42      41      39      36
4           50      38      51      41      43      41      42      32      32      42
5           34      33      37      48      33      46      35      38      48      38
6           39      60      39      45      45      33      38      54      33      43
7           42      39      48      37      40      38      34      33      45      46
8           50      50      49      46      37      49      38      39      44      44
9           41      44      55      41      53      48      36      52      32      47


第1回から第4170回: 100の位と10の位の抽せん数字 クロス集計
place10 0 1 2 3 4 5 6 7 8 9
place100
0 35 37 32 40 49 35 42 37 39 43
1 37 37 34 36 34 40 53 43 44 62
2 38 38 53 58 32 41 41 48 35 39
3 54 45 28 46 35 44 42 41 39 36
4 50 38 51 41 43 41 42 32 32 42
5 34 33 37 48 33 46 35 38 48 38
6 39 60 39 45 45 33 38 54 33 43
7 42 39 48 37 40 38 34 33 45 46
8 50 50 49 46 37 49 38 39 44 44
9 41 44 55 41 53 48 36 52 32 47

上の表は「100の位に 6 が出現したとき、10の位で 1 が出現したのは 60回」と読み取ります。

数字の羅列では大小の関係を把握しにくいので棒グラフを作成してみます。

# 横棒グラフ
crosstab2_graph = crosstab2.plot(kind='barh', figsize=(10, 10), rot=1, fontsize=8, title='100の位と10の位クロス集計 数字別出現回数 (第1回から第4170回)')
crosstab2_graph.invert_yaxis() # Y軸を反転
crosstab2_graph.tick_params(labelsize='large')
crosstab2_graph.set_xlabel('place10 の度数')
100の位と10の位のクロス集計棒グラフ


グラフを描くことで

  • 100の位が 1 のときは 10の位で 9 がよく出ている
  • 100の位が 3 のときは 10の位で 2 が出現する回数は少ない

といったことが視覚的に把握できます。

クロス集計の例 (3つの変数を掛けあわせる)

3つの変数のクロス集計もやってみます。

月と曜日の組み合わせから、100の位の数字について出現回数を求めます。

「2月の金曜日に、100の位で最も当せんしている数字は何か?」というのを分析できるようになります。

第1回から第4163回の抽せん数字で集計してみた結果が下記になります。

df['month'] = df['date'].apply(lambda x: pd.to_datetime(x).month) # 月のデータを追加
crosstab3 = pd.crosstab([df.month, df.dayofweek], df.place100)
crosstab3.head(10)
# crosstab3 の内容 (データ量が多いので先頭の10行だけ表示してます)

        place100    0       1       2       3       4       5       6       7       8       9
month dayofweek
1                  12      7       6       5       5       5       3       9       10      10
                   2       2       6       4       6       4       4       6       6       4
                   7       8       11      5       7       10      5       6       5       9
                   4       3       4       4       7       11      7       6       8       2
                   11      4       12      6       8       10      6       10      5       11
2                  9       5       6       5       13      5       8       9       4       8
                   5       2       4       8       2       5       4       7       4       3
                   6       10      11      8       2       8       2       10      9       7
                   7       7       5       8       6       4       6       3       5       5
                   14      10      7       3       11      8       8       6       7       11


クロス集計結果の分割表は下表のようになります。 (曜日がカレンダーのように月から金に並んでいないことに注意。)

「2月の金曜日に、100の位で最も当せんしている数字は」「14回出現している 0 」であることがわかります。

第1回から第4170回: 月と曜日で100の位のクロス集計
place100 0 1 2 3 4 5 6 7 8 9
month dayofweek
1 12 7 6 5 5 5 3 9 10 10
2 2 6 4 6 4 4 6 6 4
7 8 11 5 7 10 5 6 5 9
4 3 4 4 7 11 7 6 8 2
11 4 12 6 8 10 6 10 5 11
2 9 5 6 5 13 5 8 9 4 8
5 2 4 8 2 5 4 7 4 3
6 10 11 8 2 8 2 10 9 7
7 7 5 8 6 4 6 3 5 5
14 10 7 3 11 8 8 6 7 11
3 10 10 9 5 7 5 11 10 7 7
4 3 4 6 3 8 5 5 4 7
8 5 8 5 7 13 9 9 5 10
7 5 4 5 11 2 8 6 8 5
7 10 10 9 9 6 10 9 12 11
4 7 10 7 2 10 10 11 10 3 7
4 5 5 6 4 5 2 2 8 6
6 10 7 8 11 7 8 7 6 8
5 8 9 8 7 6 5 7 1 5
7 13 9 12 7 6 11 4 9 11
5 6 3 5 9 8 5 12 7 13 11
3 6 4 7 3 6 2 3 6 9
11 7 8 8 10 6 9 3 8 9
3 6 7 4 7 2 5 8 12 8
8 9 12 10 8 9 4 15 7 12
6 9 4 9 7 11 4 10 9 7 6
4 7 3 7 6 4 2 6 6 1
8 4 10 8 11 6 6 9 4 10
6 7 3 5 3 9 8 3 8 5
10 5 14 7 8 10 10 10 8 7
7 7 7 8 6 8 7 6 6 10 10
7 5 3 3 2 6 7 6 6 4
5 5 6 13 6 5 5 12 9 9
3 8 8 7 3 7 4 4 11 8
4 7 7 11 13 13 11 6 11 4
8 10 7 11 7 8 7 7 6 6 6
1 4 5 6 5 5 6 1 8 7
10 8 3 4 3 4 12 8 10 13
5 4 8 6 11 6 6 6 3 7
9 14 7 12 1 9 8 6 10 14
9 3 13 5 10 7 9 3 8 4 11
2 6 3 1 9 9 6 3 6 3
6 8 8 4 8 8 7 5 9 10
5 11 9 7 4 0 6 9 7 2
10 7 7 5 7 4 15 7 13 10
10 4 6 6 12 13 10 11 4 8 5
4 9 1 4 4 4 6 5 7 4
8 5 16 9 8 2 4 5 12 11
4 9 7 5 6 4 4 5 7 7
1 13 12 6 11 4 11 11 13 11
11 10 6 7 6 4 7 14 9 5 9
5 1 4 4 4 4 9 3 4 9
10 13 9 10 5 6 5 7 9 2
4 9 1 6 2 3 9 9 8 5
9 3 7 11 10 10 12 10 8 10
12 8 8 3 8 12 11 8 5 7 8
6 7 2 7 3 4 6 3 5 5
8 7 9 11 5 8 9 5 8 7
4 5 4 5 5 6 7 8 7 4
7 10 18 10 7 9 4 6 10 9

最終更新日: 2020年01月08日(水)


目次

プロローグ

統計解析

データマイニング

資料集

Back to top