投資のためのデータサイエンス

個人の投資活動に役立つデータ分析にまつわる話題を綴ります。

Pythonで学ぶ統計学(1): 包除原理

今回より「Pythonで学ぶ統計学」シリーズを連載します。

最初は「包除原理」です。

これは集合の和(union)を集合の積(intersection)を用いて表すものと言えます。

二つの重なりのある集合AとBの場合は、 |A\cup B|=|A|+|B|-|A\cap B| です。ただし集合を挟む縦棒は要素の数です。

例として、集合型の変数s2は2の倍数、s3は3の倍数とし、s2とs3の和集合の要素数を、直接求める場合と包除原理を用いた場合を出力します。

# 集合演算の例
s2 = {2,4,6,8,10}
s3 = {3,6,9,12,15}
s4 = s2 | s3
s5 = s2 & s3
print('s2:',s2)
print('s3:',s3)
print('s2|s3:',s4)
print('s2&s3:',s5)
print('Length of s2|s3=',len(s4))
print('Length of s2|s3(by inclusion-exclusion)=',len(s2)+len(s3)-len(s5))

結果は以下のようになります。

s2: {2, 4, 6, 8, 10}
s3: {3, 6, 9, 12, 15}
s2|s3: {2, 3, 4, 6, 8, 9, 10, 12, 15}
s2&s3: {6}
Length of s2|s3= 9
Length of s2|s3(by inclusion-exclusion)= 9