{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Sayısal Loto ve Şans Topu Analizleri"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
"from selenium import webdriver\n",
"from time import sleep\n",
"import csv\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as pl\n",
"from collections import Counter"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Sayısal Loto"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Milli Piyango web sitesine bağlanarak her haftanın Sayısal Loto sonuçlarını otomatik olarak okuyalım ve bir CSV dosyasına yazalım."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"driver = webdriver.Firefox() # Bir tarayıcı penceresi aç.\n",
"driver.get(\"http://www.mpi.gov.tr/sonuclar/_cs_sayisal.php\") # Sayısal Loto sonuçlarına git.\n",
"assert \"Sayısal Çekiliş Sonucu\" in driver.title # Doğru sayfa olduğundan emin ol.\n",
"\n",
"csvfile = open(\"sayisalloto.csv\", \"w\", newline=\"\") # verilerin kaydedileceği dosyayı yarat.\n",
"writer = csv.writer(csvfile)\n",
"\n",
"dates = driver.find_element_by_id(\"sayisal-tarihList\")\n",
"all_options = dates.find_elements_by_tag_name(\"option\")\n",
"# Tarih dropdown listesindeki bütün seçenekler üzerinden döngü yap.\n",
"for option in all_options:\n",
" date = option.get_attribute(\"value\")\n",
" option.click()\n",
" sleep(1) # tam yüklenmesi için bekle.\n",
" # Hafta numarasını oku:\n",
" haftano = driver.find_element_by_id(\"sayisal-hafta\").text\n",
" # Sonuçları oku:\n",
" numara_elem = driver.find_element_by_id(\"sayisal-numaralar\")\n",
" numaralar = [i.text for i in numara_elem.find_elements_by_tag_name(\"li\")]\n",
" # Kazanan İl/İlçe'yi oku (birden fazla olabilir):\n",
" il_ilce = driver.find_element_by_id(\"sayisal-buyukIkramiyeKazananIl\").text\n",
" if il_ilce: # boş değilse\n",
" writer.writerow([date, haftano]+ numaralar + [il_ilce])\n",
" else: # İl/İlçe boşsa, büyük ödül devretti veya kazanan il kaydı yok.\n",
" bilenkisi = driver.find_element_by_id(\"sayisal-bilenkisisayisi-6_BILEN\")\n",
" if \"Devir\" in bilenkisi.text:\n",
" writer.writerow([date, haftano]+ numaralar + [\"Devir\"])\n",
" else:\n",
" writer.writerow([date, haftano]+ numaralar + [\"Yok\"])\n",
"driver.quit()\n",
"csvfile.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Şimdi bu dosyayı kullanarak şanslı ilçeleri okuyalım ve her birinin kaç kere büyük ikramiye kazandığını sayalım."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"lotodata = pd.read_csv(\"sayisalloto.csv\", header=None, names=[\"tarih\",\"hafta\",\"n1\",\"n2\",\"n3\",\"n4\",\"n5\",\"n6\",\"İl/İlçe\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Veri dosyasının sütunlarına bir örnek:"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"
\n",
" \n",
" \n",
" | \n",
" tarih | \n",
" hafta | \n",
" n1 | \n",
" n2 | \n",
" n3 | \n",
" n4 | \n",
" n5 | \n",
" n6 | \n",
" İl/İlçe | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 20160813 | \n",
" 1031 | \n",
" 13 | \n",
" 18 | \n",
" 19 | \n",
" 20 | \n",
" 38 | \n",
" 49 | \n",
" ANKARA / YENİMAHALLE | \n",
"
\n",
" \n",
" 1 | \n",
" 20160806 | \n",
" 1030 | \n",
" 2 | \n",
" 18 | \n",
" 27 | \n",
" 31 | \n",
" 33 | \n",
" 38 | \n",
" Devir | \n",
"
\n",
" \n",
" 2 | \n",
" 20160730 | \n",
" 1029 | \n",
" 2 | \n",
" 14 | \n",
" 22 | \n",
" 23 | \n",
" 38 | \n",
" 47 | \n",
" Devir | \n",
"
\n",
" \n",
" 3 | \n",
" 20160723 | \n",
" 1028 | \n",
" 7 | \n",
" 12 | \n",
" 14 | \n",
" 34 | \n",
" 40 | \n",
" 46 | \n",
" İZMİR / KARŞIYAKA | \n",
"
\n",
" \n",
" 4 | \n",
" 20160716 | \n",
" 1027 | \n",
" 12 | \n",
" 16 | \n",
" 27 | \n",
" 36 | \n",
" 46 | \n",
" 48 | \n",
" Devir | \n",
"
\n",
" \n",
" 5 | \n",
" 20160709 | \n",
" 1026 | \n",
" 6 | \n",
" 11 | \n",
" 21 | \n",
" 39 | \n",
" 40 | \n",
" 48 | \n",
" Devir | \n",
"
\n",
" \n",
" 6 | \n",
" 20160702 | \n",
" 1025 | \n",
" 4 | \n",
" 35 | \n",
" 39 | \n",
" 40 | \n",
" 42 | \n",
" 46 | \n",
" BURSA / OSMANGAZİ - KIRKLARELİ / BABAESKİ | \n",
"
\n",
" \n",
" 7 | \n",
" 20160625 | \n",
" 1024 | \n",
" 6 | \n",
" 7 | \n",
" 11 | \n",
" 16 | \n",
" 24 | \n",
" 35 | \n",
" DENİZLİ / PAMUKKALE | \n",
"
\n",
" \n",
" 8 | \n",
" 20160618 | \n",
" 1023 | \n",
" 4 | \n",
" 10 | \n",
" 20 | \n",
" 22 | \n",
" 27 | \n",
" 33 | \n",
" ANKARA / YENİMAHALLE | \n",
"
\n",
" \n",
" 9 | \n",
" 20160611 | \n",
" 1022 | \n",
" 14 | \n",
" 16 | \n",
" 26 | \n",
" 37 | \n",
" 38 | \n",
" 45 | \n",
" ANKARA / MAMAK - ESKİŞEHİR / ODUNPAZARI | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" tarih hafta n1 n2 n3 n4 n5 n6 \\\n",
"0 20160813 1031 13 18 19 20 38 49 \n",
"1 20160806 1030 2 18 27 31 33 38 \n",
"2 20160730 1029 2 14 22 23 38 47 \n",
"3 20160723 1028 7 12 14 34 40 46 \n",
"4 20160716 1027 12 16 27 36 46 48 \n",
"5 20160709 1026 6 11 21 39 40 48 \n",
"6 20160702 1025 4 35 39 40 42 46 \n",
"7 20160625 1024 6 7 11 16 24 35 \n",
"8 20160618 1023 4 10 20 22 27 33 \n",
"9 20160611 1022 14 16 26 37 38 45 \n",
"\n",
" İl/İlçe \n",
"0 ANKARA / YENİMAHALLE \n",
"1 Devir \n",
"2 Devir \n",
"3 İZMİR / KARŞIYAKA \n",
"4 Devir \n",
"5 Devir \n",
"6 BURSA / OSMANGAZİ - KIRKLARELİ / BABAESKİ \n",
"7 DENİZLİ / PAMUKKALE \n",
"8 ANKARA / YENİMAHALLE \n",
"9 ANKARA / MAMAK - ESKİŞEHİR / ODUNPAZARI "
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lotodata.head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Büyük ikramiyeyi kazanan yerler \"İL / İLÇE\" biçiminde kaydedilmiş. İkramiye birden fazla yere çıktıysa \"İL1 / İLÇE1 - İL2 / İLÇE2 - ...\" biçiminde kayıtlı. Bu kaydı bölüp ayrı \"İL /İLÇE\" biçimlerine getirelim, ve sadece il/ilçelerden oluşan bir liste hazırlayalım."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"ililceliste = []\n",
"for ii in lotodata[\"İl/İlçe\"].values:\n",
" if ii not in [\"Devir\", \"Yok\"]:\n",
" ililceliste += ii.split(\" - \")"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['ANKARA / YENİMAHALLE', 'İZMİR / KARŞIYAKA', 'BURSA / OSMANGAZİ', 'KIRKLARELİ / BABAESKİ', 'DENİZLİ / PAMUKKALE']\n"
]
}
],
"source": [
"print(ililceliste[:5])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Şimdi bu liste içinde her bir elemanın kaç kere bulunduğunun çetelesini oluşturalım, en şanslı on ilçeyi listeleyelim:"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANKARA / YENİMAHALLE 9\n",
"İSTANBUL / KADIKÖY 9\n",
"İZMİR / KARŞIYAKA 8\n",
"ANKARA / ÇANKAYA 8\n",
"İSTANBUL / FATİH 6\n",
"İZMİR / KONAK 6\n",
"İSTANBUL / BAHÇELİEVLER 5\n",
"İSTANBUL / ŞİŞLİ 5\n",
"İZMİR / BORNOVA 5\n",
"İSTANBUL / ÜSKÜDAR 4\n"
]
}
],
"source": [
"for a,b in Counter(ililceliste).most_common(10):\n",
" print(a,b)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Görüyoruz ki Ankara Yenimahalle gerçekten şanslı, ama İstanbul Kadıköy de aynı derecede şanslı. Başka ilçelerle karşılaştırıldığında Yenimahalle'nin olağanüstü bir farklılığı yok."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Şans Topu"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Aynı analizi Şans Topu için yapalım. Önce Milli Piyango web sitesinden bütün haftaların verilerini çekelim. Bu sefer kazanan sayıları çekmeyeceğiz."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"driver = webdriver.Firefox()\n",
"driver.get(\"http://www.mpi.gov.tr/sonuclar/_cs_sanstopu.php\")\n",
"assert \"Şans Topu Çekiliş Sonucu\" in driver.title\n",
"\n",
"csvfile = open(\"sanstopu.csv\", \"w\", newline=\"\")\n",
"writer = csv.writer(csvfile)\n",
"dates = driver.find_element_by_id(\"sanstopu-tarihList\")\n",
"all_options = dates.find_elements_by_tag_name(\"option\")\n",
"# Tarih dropdown listesindeki bütün seçenekler üzerinden döngü\n",
"for option in all_options:\n",
" date = option.get_attribute(\"value\")\n",
" option.click()\n",
" sleep(1) # tam yüklenmesi için bekle\n",
" # Hafta numarasını oku:\n",
" haftano = driver.find_element_by_id(\"sanstopu-hafta\").text\n",
" # Kazanan İl/İlçe'yi oku (birden fazla olabilir):\n",
" il_ilce = driver.find_element_by_id(\"sanstopu-buyukIkramiyeKazananIl\").text\n",
" if il_ilce: # if not empty\n",
" writer.writerow([date, haftano] + [il_ilce])\n",
" else: # devretti veya kazanan il kaydı yok\n",
" bilenkisi = driver.find_element_by_id(\"sanstopu-bilenkisisayisi-5_1_BILEN\")\n",
" if \"Devir\" in bilenkisi.text:\n",
" writer.writerow([date, haftano] + [\"Devir\"])\n",
" else:\n",
" writer.writerow([date, haftano] + [\"Yok\"])\n",
"driver.quit()\n",
"csvfile.close()"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"sanstopudata = pd.read_csv(\"sanstopu.csv\", header=None, names=[\"tarih\",\"hafta\",\"İl/İlçe\"])"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" tarih | \n",
" hafta | \n",
" İl/İlçe | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 20160817 | \n",
" 792 | \n",
" ANTALYA / KEPEZ - İSTANBUL / BAĞCILAR - KOCAEL... | \n",
"
\n",
" \n",
" 1 | \n",
" 20160810 | \n",
" 791 | \n",
" Devir | \n",
"
\n",
" \n",
" 2 | \n",
" 20160803 | \n",
" 790 | \n",
" ANKARA / ALTINDAĞ - HATAY / İSKENDERUN | \n",
"
\n",
" \n",
" 3 | \n",
" 20160727 | \n",
" 789 | \n",
" ESKİŞEHİR / SİVRİHİSAR - HATAY / ANTAKYA | \n",
"
\n",
" \n",
" 4 | \n",
" 20160720 | \n",
" 788 | \n",
" ANKARA / KEÇİÖREN - ANKARA / SİNCAN - ELAZIĞ /... | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" tarih hafta İl/İlçe\n",
"0 20160817 792 ANTALYA / KEPEZ - İSTANBUL / BAĞCILAR - KOCAEL...\n",
"1 20160810 791 Devir\n",
"2 20160803 790 ANKARA / ALTINDAĞ - HATAY / İSKENDERUN\n",
"3 20160727 789 ESKİŞEHİR / SİVRİHİSAR - HATAY / ANTAKYA\n",
"4 20160720 788 ANKARA / KEÇİÖREN - ANKARA / SİNCAN - ELAZIĞ /..."
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sanstopudata.head()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"st_ililceliste = []\n",
"for ii in sanstopudata[\"İl/İlçe\"].values:\n",
" if ii not in [\"Devir\", \"Yok\"]:\n",
" st_ililceliste += ii.split(\" - \")"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ANKARA / ÇANKAYA 15\n",
"İSTANBUL / FATİH 14\n",
"İZMİR / KONAK 12\n",
"ANTALYA / MURATPAŞA 11\n",
"ANKARA / YENİMAHALLE 9\n",
"İSTANBUL / KADIKÖY 9\n",
"İSTANBUL / ŞİŞLİ 7\n",
"İSTANBUL / BEŞİKTAŞ 7\n",
"ANKARA / ALTINDAĞ 7\n",
"İSTANBUL / PENDİK 6\n"
]
}
],
"source": [
"for a,b in Counter(st_ililceliste).most_common(10):\n",
" print(a,b)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Şans Topu oyununda en şanslı ilçe Ankara Çankaya. Yenimahalle ve Kadıköy bu sefer beşinci sırada."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Sayısal Loto'da çok çıkan sayılar"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Bütün Sayısal Loto verisini çekmişken, çıkan sayıları (1-49) analiz etmek mümkün. Bu verilerle Sayısal Loto'nun hilesiz olup olmadığını da istatistiksel olarak test edebiliriz."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sayılara ait sütunlar:"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"
\n",
" \n",
" \n",
" | \n",
" n1 | \n",
" n2 | \n",
" n3 | \n",
" n4 | \n",
" n5 | \n",
" n6 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 13 | \n",
" 18 | \n",
" 19 | \n",
" 20 | \n",
" 38 | \n",
" 49 | \n",
"
\n",
" \n",
" 1 | \n",
" 2 | \n",
" 18 | \n",
" 27 | \n",
" 31 | \n",
" 33 | \n",
" 38 | \n",
"
\n",
" \n",
" 2 | \n",
" 2 | \n",
" 14 | \n",
" 22 | \n",
" 23 | \n",
" 38 | \n",
" 47 | \n",
"
\n",
" \n",
" 3 | \n",
" 7 | \n",
" 12 | \n",
" 14 | \n",
" 34 | \n",
" 40 | \n",
" 46 | \n",
"
\n",
" \n",
" 4 | \n",
" 12 | \n",
" 16 | \n",
" 27 | \n",
" 36 | \n",
" 46 | \n",
" 48 | \n",
"
\n",
" \n",
" 5 | \n",
" 6 | \n",
" 11 | \n",
" 21 | \n",
" 39 | \n",
" 40 | \n",
" 48 | \n",
"
\n",
" \n",
" 6 | \n",
" 4 | \n",
" 35 | \n",
" 39 | \n",
" 40 | \n",
" 42 | \n",
" 46 | \n",
"
\n",
" \n",
" 7 | \n",
" 6 | \n",
" 7 | \n",
" 11 | \n",
" 16 | \n",
" 24 | \n",
" 35 | \n",
"
\n",
" \n",
" 8 | \n",
" 4 | \n",
" 10 | \n",
" 20 | \n",
" 22 | \n",
" 27 | \n",
" 33 | \n",
"
\n",
" \n",
" 9 | \n",
" 14 | \n",
" 16 | \n",
" 26 | \n",
" 37 | \n",
" 38 | \n",
" 45 | \n",
"
\n",
" \n",
" 10 | \n",
" 7 | \n",
" 9 | \n",
" 30 | \n",
" 33 | \n",
" 36 | \n",
" 45 | \n",
"
\n",
" \n",
" 11 | \n",
" 4 | \n",
" 6 | \n",
" 14 | \n",
" 20 | \n",
" 36 | \n",
" 37 | \n",
"
\n",
" \n",
" 12 | \n",
" 4 | \n",
" 8 | \n",
" 15 | \n",
" 27 | \n",
" 33 | \n",
" 47 | \n",
"
\n",
" \n",
" 13 | \n",
" 3 | \n",
" 4 | \n",
" 6 | \n",
" 21 | \n",
" 27 | \n",
" 42 | \n",
"
\n",
" \n",
" 14 | \n",
" 8 | \n",
" 14 | \n",
" 25 | \n",
" 33 | \n",
" 37 | \n",
" 48 | \n",
"
\n",
" \n",
" 15 | \n",
" 9 | \n",
" 11 | \n",
" 17 | \n",
" 28 | \n",
" 35 | \n",
" 47 | \n",
"
\n",
" \n",
" 16 | \n",
" 5 | \n",
" 7 | \n",
" 9 | \n",
" 18 | \n",
" 25 | \n",
" 42 | \n",
"
\n",
" \n",
" 17 | \n",
" 6 | \n",
" 23 | \n",
" 26 | \n",
" 29 | \n",
" 46 | \n",
" 47 | \n",
"
\n",
" \n",
" 18 | \n",
" 13 | \n",
" 14 | \n",
" 23 | \n",
" 27 | \n",
" 32 | \n",
" 33 | \n",
"
\n",
" \n",
" 19 | \n",
" 1 | \n",
" 4 | \n",
" 22 | \n",
" 29 | \n",
" 37 | \n",
" 44 | \n",
"
\n",
" \n",
" 20 | \n",
" 5 | \n",
" 10 | \n",
" 18 | \n",
" 26 | \n",
" 45 | \n",
" 48 | \n",
"
\n",
" \n",
" 21 | \n",
" 10 | \n",
" 13 | \n",
" 16 | \n",
" 23 | \n",
" 44 | \n",
" 47 | \n",
"
\n",
" \n",
" 22 | \n",
" 6 | \n",
" 8 | \n",
" 12 | \n",
" 20 | \n",
" 36 | \n",
" 46 | \n",
"
\n",
" \n",
" 23 | \n",
" 1 | \n",
" 20 | \n",
" 34 | \n",
" 35 | \n",
" 37 | \n",
" 42 | \n",
"
\n",
" \n",
" 24 | \n",
" 2 | \n",
" 3 | \n",
" 16 | \n",
" 23 | \n",
" 33 | \n",
" 44 | \n",
"
\n",
" \n",
" 25 | \n",
" 5 | \n",
" 11 | \n",
" 15 | \n",
" 19 | \n",
" 20 | \n",
" 31 | \n",
"
\n",
" \n",
" 26 | \n",
" 17 | \n",
" 19 | \n",
" 25 | \n",
" 28 | \n",
" 32 | \n",
" 34 | \n",
"
\n",
" \n",
" 27 | \n",
" 1 | \n",
" 8 | \n",
" 9 | \n",
" 22 | \n",
" 24 | \n",
" 26 | \n",
"
\n",
" \n",
" 28 | \n",
" 17 | \n",
" 36 | \n",
" 38 | \n",
" 41 | \n",
" 43 | \n",
" 47 | \n",
"
\n",
" \n",
" 29 | \n",
" 6 | \n",
" 13 | \n",
" 18 | \n",
" 21 | \n",
" 23 | \n",
" 24 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 1001 | \n",
" 14 | \n",
" 21 | \n",
" 27 | \n",
" 35 | \n",
" 42 | \n",
" 46 | \n",
"
\n",
" \n",
" 1002 | \n",
" 8 | \n",
" 13 | \n",
" 21 | \n",
" 28 | \n",
" 34 | \n",
" 38 | \n",
"
\n",
" \n",
" 1003 | \n",
" 1 | \n",
" 6 | \n",
" 10 | \n",
" 35 | \n",
" 43 | \n",
" 49 | \n",
"
\n",
" \n",
" 1004 | \n",
" 15 | \n",
" 20 | \n",
" 23 | \n",
" 30 | \n",
" 39 | \n",
" 47 | \n",
"
\n",
" \n",
" 1005 | \n",
" 1 | \n",
" 8 | \n",
" 16 | \n",
" 28 | \n",
" 39 | \n",
" 40 | \n",
"
\n",
" \n",
" 1006 | \n",
" 5 | \n",
" 11 | \n",
" 17 | \n",
" 36 | \n",
" 38 | \n",
" 41 | \n",
"
\n",
" \n",
" 1007 | \n",
" 3 | \n",
" 5 | \n",
" 10 | \n",
" 22 | \n",
" 23 | \n",
" 31 | \n",
"
\n",
" \n",
" 1008 | \n",
" 1 | \n",
" 2 | \n",
" 4 | \n",
" 12 | \n",
" 35 | \n",
" 48 | \n",
"
\n",
" \n",
" 1009 | \n",
" 14 | \n",
" 17 | \n",
" 28 | \n",
" 33 | \n",
" 35 | \n",
" 49 | \n",
"
\n",
" \n",
" 1010 | \n",
" 1 | \n",
" 2 | \n",
" 18 | \n",
" 19 | \n",
" 23 | \n",
" 45 | \n",
"
\n",
" \n",
" 1011 | \n",
" 19 | \n",
" 32 | \n",
" 33 | \n",
" 41 | \n",
" 46 | \n",
" 49 | \n",
"
\n",
" \n",
" 1012 | \n",
" 2 | \n",
" 12 | \n",
" 13 | \n",
" 25 | \n",
" 30 | \n",
" 39 | \n",
"
\n",
" \n",
" 1013 | \n",
" 11 | \n",
" 15 | \n",
" 21 | \n",
" 33 | \n",
" 37 | \n",
" 38 | \n",
"
\n",
" \n",
" 1014 | \n",
" 2 | \n",
" 16 | \n",
" 20 | \n",
" 22 | \n",
" 25 | \n",
" 27 | \n",
"
\n",
" \n",
" 1015 | \n",
" 18 | \n",
" 28 | \n",
" 29 | \n",
" 32 | \n",
" 43 | \n",
" 44 | \n",
"
\n",
" \n",
" 1016 | \n",
" 14 | \n",
" 28 | \n",
" 32 | \n",
" 38 | \n",
" 41 | \n",
" 45 | \n",
"
\n",
" \n",
" 1017 | \n",
" 3 | \n",
" 4 | \n",
" 19 | \n",
" 26 | \n",
" 27 | \n",
" 37 | \n",
"
\n",
" \n",
" 1018 | \n",
" 11 | \n",
" 18 | \n",
" 30 | \n",
" 40 | \n",
" 41 | \n",
" 43 | \n",
"
\n",
" \n",
" 1019 | \n",
" 13 | \n",
" 22 | \n",
" 33 | \n",
" 38 | \n",
" 39 | \n",
" 40 | \n",
"
\n",
" \n",
" 1020 | \n",
" 22 | \n",
" 26 | \n",
" 37 | \n",
" 38 | \n",
" 39 | \n",
" 49 | \n",
"
\n",
" \n",
" 1021 | \n",
" 5 | \n",
" 11 | \n",
" 24 | \n",
" 29 | \n",
" 41 | \n",
" 45 | \n",
"
\n",
" \n",
" 1022 | \n",
" 4 | \n",
" 15 | \n",
" 16 | \n",
" 18 | \n",
" 27 | \n",
" 41 | \n",
"
\n",
" \n",
" 1023 | \n",
" 3 | \n",
" 17 | \n",
" 36 | \n",
" 41 | \n",
" 46 | \n",
" 47 | \n",
"
\n",
" \n",
" 1024 | \n",
" 4 | \n",
" 8 | \n",
" 14 | \n",
" 24 | \n",
" 27 | \n",
" 36 | \n",
"
\n",
" \n",
" 1025 | \n",
" 2 | \n",
" 14 | \n",
" 24 | \n",
" 25 | \n",
" 30 | \n",
" 36 | \n",
"
\n",
" \n",
" 1026 | \n",
" 2 | \n",
" 5 | \n",
" 14 | \n",
" 30 | \n",
" 31 | \n",
" 39 | \n",
"
\n",
" \n",
" 1027 | \n",
" 7 | \n",
" 11 | \n",
" 16 | \n",
" 18 | \n",
" 25 | \n",
" 26 | \n",
"
\n",
" \n",
" 1028 | \n",
" 6 | \n",
" 22 | \n",
" 26 | \n",
" 31 | \n",
" 38 | \n",
" 44 | \n",
"
\n",
" \n",
" 1029 | \n",
" 3 | \n",
" 14 | \n",
" 16 | \n",
" 23 | \n",
" 27 | \n",
" 43 | \n",
"
\n",
" \n",
" 1030 | \n",
" 5 | \n",
" 15 | \n",
" 20 | \n",
" 32 | \n",
" 34 | \n",
" 47 | \n",
"
\n",
" \n",
"
\n",
"
1031 rows × 6 columns
\n",
"
"
],
"text/plain": [
" n1 n2 n3 n4 n5 n6\n",
"0 13 18 19 20 38 49\n",
"1 2 18 27 31 33 38\n",
"2 2 14 22 23 38 47\n",
"3 7 12 14 34 40 46\n",
"4 12 16 27 36 46 48\n",
"5 6 11 21 39 40 48\n",
"6 4 35 39 40 42 46\n",
"7 6 7 11 16 24 35\n",
"8 4 10 20 22 27 33\n",
"9 14 16 26 37 38 45\n",
"10 7 9 30 33 36 45\n",
"11 4 6 14 20 36 37\n",
"12 4 8 15 27 33 47\n",
"13 3 4 6 21 27 42\n",
"14 8 14 25 33 37 48\n",
"15 9 11 17 28 35 47\n",
"16 5 7 9 18 25 42\n",
"17 6 23 26 29 46 47\n",
"18 13 14 23 27 32 33\n",
"19 1 4 22 29 37 44\n",
"20 5 10 18 26 45 48\n",
"21 10 13 16 23 44 47\n",
"22 6 8 12 20 36 46\n",
"23 1 20 34 35 37 42\n",
"24 2 3 16 23 33 44\n",
"25 5 11 15 19 20 31\n",
"26 17 19 25 28 32 34\n",
"27 1 8 9 22 24 26\n",
"28 17 36 38 41 43 47\n",
"29 6 13 18 21 23 24\n",
"... .. .. .. .. .. ..\n",
"1001 14 21 27 35 42 46\n",
"1002 8 13 21 28 34 38\n",
"1003 1 6 10 35 43 49\n",
"1004 15 20 23 30 39 47\n",
"1005 1 8 16 28 39 40\n",
"1006 5 11 17 36 38 41\n",
"1007 3 5 10 22 23 31\n",
"1008 1 2 4 12 35 48\n",
"1009 14 17 28 33 35 49\n",
"1010 1 2 18 19 23 45\n",
"1011 19 32 33 41 46 49\n",
"1012 2 12 13 25 30 39\n",
"1013 11 15 21 33 37 38\n",
"1014 2 16 20 22 25 27\n",
"1015 18 28 29 32 43 44\n",
"1016 14 28 32 38 41 45\n",
"1017 3 4 19 26 27 37\n",
"1018 11 18 30 40 41 43\n",
"1019 13 22 33 38 39 40\n",
"1020 22 26 37 38 39 49\n",
"1021 5 11 24 29 41 45\n",
"1022 4 15 16 18 27 41\n",
"1023 3 17 36 41 46 47\n",
"1024 4 8 14 24 27 36\n",
"1025 2 14 24 25 30 36\n",
"1026 2 5 14 30 31 39\n",
"1027 7 11 16 18 25 26\n",
"1028 6 22 26 31 38 44\n",
"1029 3 14 16 23 27 43\n",
"1030 5 15 20 32 34 47\n",
"\n",
"[1031 rows x 6 columns]"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lotodata.iloc[:,2:8]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Bu sayıları tek bir liste haline getirelim:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"sayilar = np.concatenate(lotodata.iloc[:,2:8].values)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Bir histogram oluşturarak her sayının sıklığına bakalım:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n36fXSNVuM+zYJHkH8OvADuDhwGrgI8DPAb2qmk2yFripqk6Yp3+NWvf69RvYtu3dwIYF91m9eiP3\n3nsFe8j5uxH7TPRY9vF9tU83x7KP75F9ujmWffblPRo1QyahqjJKn06miFTV+VX12Ko6DngJcGNV\nvQL4GHBus9s5wFVd1CdJkiQtVteriMz1TuD0JNuA05ptSZIkaWp0Mgd7WFV9Evhk8/h7wHO7rUiS\nJElavKU2gi1JkiRNNQO2JEmS1CIDtiRJktQiA7YkSZLUIgO2JEmS1CIDtiRJktQiA7YkSZLUIgO2\nJEmS1CIDtiRJktQiA7YkSZLUIgO2JEmS1CIDtiRJktQiA7YkSZLUIgO2JEmS1CIDtiRJktQiA7Yk\nSZLUIgO2JEmS1CIDtiRJktQiA7YkSZLUok4CdpJ1SW5M8uUktyV5Q9N+WJLrkmxLcm2SQ7uoT5Ik\nSVqsrkawdwBvqqoTgWcDr0uyHjgPuKGqjgduBDZ1VJ8kSZK0KJ0E7KraXlVfbB7fB9wOrAPOArY0\nu20Bzu6iPkmSJGmxOp+DneQY4KnAZ4E1VTULgxAOHNFdZZIkSdLo9u/y4EkeCVwJvLGq7ktSc3aZ\nu73LzMzMrse9Xo9erzeOEiVJkrSC9Pt9+v3+Pr1GqnabYccqyf7Ax4FPVNXFTdvtQK+qZpOsBW6q\nqhPm6Vuj1r1+/Qa2bXs3sGHBfVav3si9917BHnL+bsQ+Ez2WfXxf7dPNsezje2Sfbo5ln315j0bN\nkEmoqozSp8spIu8Dtu4M142rgXObx+cAV026KEmSJGlfdDJFJMkpwMuB25J8gcGPIOcDvw9cnuRV\nwF3Axi7qkyRJkhark4BdVZ8GVu3m6edOshZJkiSpTZ2vIiJJkiQtJwZsSZIkqUUGbEmSJKlFBmxJ\nkiSpRQZsSZIkqUUGbEmSJKlFBmxJkiSpRQZsSZIkqUUGbEmSJKlFBmxJkiSpRQZsSZIkqUUGbEmS\nJKlFBmxJkiSpRQZsSZIkqUUGbEmSJKlFBmxJkiSpRQZsSZIkqUUGbEmSJKlFSzJgJ3l+kq8k+WqS\n3+66HkmSJGmhllzATrIf8J+A5wEnAi9Nsr7bqjQd+l0XoCWp33UBWpL6XRegJanfdQFaJpZcwAZO\nBu6oqruq6gHgQ8BZHdekqdDvugAtSf2uC9CS1O+6AC1J/a4L0DKxFAP2kcA3h7b/X9MmSZIkLXn7\n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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = pl.figure(figsize=(12,4))\n",
"pl.hist(sayilar, bins=49);\n",
"pl.xlabel(\"Çıkan sayı\")\n",
"pl.ylabel(\"Kaç kere\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1-49 arası sayıların sayımları arasında değişkenlik var, ama buna bakarak sayıların olasılıkları farklı diyemeyiz. Eşit olasılık olsa bile, değişkenliğin çeşitli sebepleri olabilir:\n",
"* Rastgele süreçlerin doğası.\n",
"* Nispeten az sayıda (~6000) kayıt olması.\n",
"* Bir çekiliş içinde sayıların çekilme olasılıklarının aynı olmaması. Sayısal Loto'nun her çekilişinde _birbirinden farklı_ altı sayı çekilmelidir. Mesela önce 14 çıktıysa, sonraki beş çekimde 14 çıkmayacaktır. Bu şart, düzgün dağılıma yakınsamayı yavaşlatır."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"En çok çıkan on sayı ve kaç kere çıktıkları:"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[(38, 150),\n",
" (18, 145),\n",
" (21, 144),\n",
" (16, 143),\n",
" (1, 142),\n",
" (36, 139),\n",
" (26, 138),\n",
" (40, 138),\n",
" (47, 138),\n",
" (17, 134)]"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Counter(sayilar).most_common(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Bu dağılımlara bakarak Sayısal Loto hileli veya hilesiz demek mümkün mü? Bütün sayıların (1-49) eşit olasılıkta olduğunu varsayarak, buradaki gibi bir değişkenlik ortaya çıkabilir mi? Bu hipotezi test etmek için Pearson ki-kare testini uygulamamız gerekir. Ancak, her bir çekilişte sayıların birbirinden farklı çıkması mecburiyeti sebebiyle bu testin farklı bir versiyonunu uygulamamız gerek.\n",
"\n",
"(Haigh, J. (1997), The Statistics of the National Lottery. Journal of the Royal Statistical Society: Series A (Statistics in Society), 160: 187–206. doi:10.1111/1467-985X.00056)\n",
"\n",
"$W$ istatistiğini aşağıdaki gibi tanımlayalım.\n",
"\n",
"$$ W = \\frac{M(M-1)}{(M-m)Dm} \\left( \\sum_{i=1}^{M} X_i - \\frac{m^2 D^2}{M}\\right) $$\n",
"\n",
"Burada $M=49$ çekilebilecek sayılar, $m=6$ bir çekilişte kaç top çekildiği, $D$ çekiliş sayısı, $X_i$ $i$ numaralı topun kaç kere çekildiğidir."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"46.9436311551217\n"
]
}
],
"source": [
"M = 49\n",
"m = 6\n",
"D = len(sayilar)/6\n",
"X = [f[1] for f in sorted(Counter(sayilar).most_common())]\n",
"\n",
"W = M*(M-1)/((M-m)*D*m) * (sum([x**2 for x in X]) - m**2 * D**2 / M )\n",
"print(W)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Bu yeni istatistik $\\chi^2_{M-1}$ dağılımına uyar. Böylece hilesizlik hipotezinin p değerini bulabiliriz."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.51610614604308425"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from scipy.stats import chi2\n",
"1-chi2.cdf(W,M-1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sözlü olarak ifade edersek: Loto çekilişinin hilesiz (yani bütün sayıların eşit olasılıkta düştüğü) varsayımıyla, buradaki kadar veya daha büyük bir değişkenlik gözleme olasılığı %52'dir. Bu olasılık %5 veya daha düşük olsa hilesizlik varsayımını reddedebilirdik, ama bu durumda reddedemiyoruz. Sayısal Loto'da bazı sayıların daha yüksek olasılıklarla çıktığını düşünmek için bir sebep yok."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}