{ "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
tarihhaftan1n2n3n4n5n6İl/İlçe
0201608131031131819203849ANKARA / YENİMAHALLE
120160806103021827313338Devir
220160730102921422233847Devir
320160723102871214344046İZMİR / KARŞIYAKA
4201607161027121627364648Devir
520160709102661121394048Devir
620160702102543539404246BURSA / OSMANGAZİ - KIRKLARELİ / BABAESKİ
72016062510246711162435DENİZLİ / PAMUKKALE
820160618102341020222733ANKARA / YENİMAHALLE
9201606111022141626373845ANKARA / MAMAK - ESKİŞEHİR / ODUNPAZARI
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
tarihhaftaİl/İlçe
020160817792ANTALYA / KEPEZ - İSTANBUL / BAĞCILAR - KOCAEL...
120160810791Devir
220160803790ANKARA / ALTINDAĞ - HATAY / İSKENDERUN
320160727789ESKİŞEHİR / SİVRİHİSAR - HATAY / ANTAKYA
420160720788ANKARA / KEÇİÖREN - ANKARA / SİNCAN - ELAZIĞ /...
\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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
n1n2n3n4n5n6
0131819203849
121827313338
221422233847
371214344046
4121627364648
561121394048
643539404246
76711162435
841020222733
9141626373845
107930333645
114614203637
124815273347
13346212742
1481425333748
1591117283547
16579182542
1762326294647
18131423273233
191422293744
2051018264548
21101316234447
226812203646
2312034353742
242316233344
2551115192031
26171925283234
27189222426
28173638414347
2961318212324
.....................
1001142127354246
100281321283438
10031610354349
1004152023303947
10051816283940
100651117363841
10073510222331
1008124123548
1009141728333549
10101218192345
1011193233414649
101221213253039
1013111521333738
101421620222527
1015182829324344
1016142832384145
10173419262737
1018111830404143
1019132233383940
1020222637383949
102151124294145
102241516182741
102331736414647
10244814242736
102521424253036
10262514303139
102771116182526
102862226313844
102931416232743
103051520323447
\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 }