Vučić se servira onima sa platom do 300 evra mesečno

Ko šta radi, ja ispada samo pljujem Vučića po ovom blogu. Evo još jedan tekst, kao neki pokušaj analize podataka, ovaj put o tome ko sa kojom platom glasa za dragog nam Vučka.

BTW, ako vam se sviđaju ove moje debilne analize sa ovako random temama, onda će vam se sigurno svidi i datatata blog od mog kolege:) Sad kad sam završio sa reklamama:), da se bacimo na stvar.

Kako sam došao ove analize

 

Na prethodnim izborima, Vučko je odneo ubedljivu pobedu. Svako može da priča sad o razlozima (čak sam se i ja okušao u tome), jedan od češćih je bio da su ljudi naterani da glasaju za njega, ili da tamo neki seljaci glasaju, a da je ta “građanska opcija” inertna itd., itd. Mene je zanimalo da vidim da li stvarno ima u tome nešto. Jedan od retkih otvorenih izvora podataka u Srbiji je republički zavod za statistiku. Tamo, duboko skriveni, da ih slučajno neko ne nađe (pu-pu-pu, daleko bilo), ili ne daj Bože skrejpuje (pa su često dostupni samo iz browser-a, nicht .csv, nicht Excel), su razni podaci, manje ili više zanimljivi. Razmišljalo je nas nekoliko šta bi to bilo najbolje i najzanimljivije gledati, ali ništa pametno osim plata nismo našli. Ako vi imate neki dobar izvor podataka, koji ima smisla ukrstiti nekako sa rezultatima izborima, javite!

Elem, na publikacijama za zaposlenost i zarade možete naći ZP14, tj. zarade po opštinama i gradovima, a najnoviji izveštaj u trenutku pisanja ovog teksta je iz maja. Malo sređivanja i lako dobijemo spisak svih prosečnih plata po opštinama. Na sajtu RZS-a se mogu skinuti i rezultati izbora po opštinama. Isto malo dorade, i ova dva izvora su spremna za ukrštanje. Mislim, da se ne lažemo, jasno je bilo da će biti korelacije, pitanje je samo bilo kolike:) Sređene i ukrštene podatke, kao jedan mali i pitki Excel, možete da preuzmete odavde.

Analiza

 

OK, definitivno postoji korelacija, jasno se vidi sa ove slike:

 

(klik na sliku za veću verziju)

 

Na X-osi je prosečna plata po mestima, a na Y-osi je procenat glasova za Vučića. Nažalost, nisam mogao da ubacim da se vidi svako mesto, ali većinu ovih “izbačenijih” (da ne kažem outlier-a) jesam (kliknite na sliku za veću verziju). Ako želite da vidite kako se kotira vaše mesto, pravac na download Excel-a i nađite se sami! Evo par stvari koje sam ja uočio (vi javite ako primetite još nešto interesantno):

  • Korelisane su babe i žabe u neku ruku. Prosečna plata je uzimana sa mesta gde su prijavljene firme, a procenat glasova za Vučka sa mesta gde su prijavljivani ljudi. Tako da nije baš tačno preslikavanje. Kako god, mislim da nisam mnogo omanuo, jer iako se na bolje povezanim mestima (npr. Novi Beograd↔Vračar) ljudi više kreću, postoji prostorna korelacija (prijavljen u Vlasotincu neće raditi u firmi koja je registrovana u Subotici)
  • Surčin je outlier jer je tamo kontrola letenja i aerodrom (a oni su poznati da nemaju baš male plate:). Ja bar tako objašnjavam
  • Od ostalih zanimljivih outlier-a, ukazao bih na Čajetinu – bastion slobodne Srbije:p (ne smatram beogradski trougao “Vračar-Novi Beograd-Stari Grad” nešto zanimljivim)
  • Trgovište je pobedilo:) Znam da nije politički korektno, ali svaki put kad vidim ovaj grafik sa njim na vrhu, malo se nasmejem:)
  • Od Mladenovca (ovde nije prikazan) i Belog sam očekivao da postanu outlier, ali nisu – Beli nije uspeo da izvede Mladenovac van mediokritetske 3σ korelacije
  • I na kraju – cum hoc ergo propter hoc. Samo zato što veza postoji, ne znači da je niska plata uzrok, već mnogo verovatnije postoji uzajmna povezanost ova dva. Drugim rečima, može se reći da siromašniji ljudi glasaju za Vučića (globalno gledano), ali ne možemo da kažemo da ako u Trgovište sipamo milione evra, da će ti ljudi da glasaju za nekog drugog. Ili obrnuto, da će Stari Grad postati siromašniji ako počne da glasa za Vučića – sve je to lepo uvezano i povezano, ovi grafici samo surface-uju mali stepen jednostavnosti u opštem haosu realnosti;) (da, znam, nekad mnogo kenjam)

 

A da vidimo trend:

 

R squared je 0.27. Za trend sam uzeo linearni (najviše mi je ličilo i najbolje je rezultate davao na ovom uzorku, mada je nemoguće da je ovo linearni model:). Po ovom trendline-u možemo da zaključimo da u mestu u kome je plata 0 dinara, procenat glasova za Vučića bi bio oko 85%, a spao bi ispod 50% kada je prosečna plata 80.000. Vučić (i njemu slični) će dobiti 0% glasova kada prosečna plata bude 210.000 dinara. Sada je valjda jasno odakle mi ideja za naslov teksta:) Ne znam za tebe čitaoče, ali meni ove brojke totalno imaju smisla.

Po oblastima

 

Korelacija je jasna i kada se pogledaju agregirani rezultati po oblastima:

 

 

Samo beogradski pašaluk

 

Ako niste iz Beograda, ovo će biti još jedan od onih “jebo ih Beograd” momenata (znam kako je…živeo sam van tog Beograda:), i slažem se da nema ništa više poente analizirati Beograd ovde nego npr. Niš, ali šta da radim – za Beograd ima više opština, lepše izgleda na grafikonima, a i moj je grad, mene je zanimao on najviše:

 

 

Kad gledate Beograd, podsetite se samo prve stavke gore kada sam pominjao mešanje baba i žaba – na Beogradu je to najizraženije, pa uzmite ovaj grafikon sa rezervom.

Posted in Analitika, Politika | Tagged | Leave a comment

What football odd is best to play on big competitions

Min or max, that is the question

 

So, for the past 8 years or so I’ve been having small pool betting web site for me and my friends – nothing fancy, around 50 people at most, and we bet only on final result (1, X, 2). Number of points you get is equal to decimal odd of your bet (so, if you play odd with value of 1.61 (or 8/13 in fractional), you get 1.61 points). It is the same as playing singles with 1 stake on each game. Whoever has the highest number of points, wins! So, I fire up this site every 2 year – either for World Cup or for Euro cup. I am writing this right after the Euro 2016 finals and we have our new winner:) (and as you probably guessed correctly, he won mostly because he placed a lot of bets on Island and that brought him a lot of points:). So, question I got a lot since this pool betting is alive, and especially during competitions is:

 

If I play only minimum (or maximum) odds throughout whole competition, will I be the first one?

 

Short answer, for those who don’t want to read too much is – unfortunately no. Playing small odds will definitively minimize your risk, but will not get you profit. Playing only maximum odds will also not get you far; of course, depending how weird competition was. Actually, not only that both of these will not get you to be top 1 in my pool bet, but it will not even get you to be positive if you played it for real! So, let’s look at Euro2016. If you played only minimum odds, you would get 36.94 points (sum of all winning odds). To put this into perspective, if you gave 1 for every match and there was 63 matches total, you would get back only 36.94, so you would lose more than 26. Definitively not a way to go. Let’s look what would happen if you would play only maximum odds – you would be far better – you would get back 56.35 ( or points). So, you would end up in positive profit, e.g. earn money! I did same analysis for World Cup 2014 and all results are in the table below:

 

Competition Games
Odds playing Points Profit Hypothetical place in my pool bet
World Cup 2014 64 Min 67.05 +3.05€ 16/68
World Cup 2014 64 Max 38.35 -25.65€ 64/68
Euro 2016 51 Min 36.94 -14.06€ 56/70
Euro 2016 51 Max 56.35 +5.35€ 16/70

 

As you can see, on World Cup, it was far better playing minimal odds, while on Euro2016, it was better playing high ones. I guess it can be explained as Euro2016 was far more volatile than World Cup 2014. Here, you had so many surprises – Island, Wales, Hungary, even Albania in first round. Looking at World Cup 2014, I cannot think of any outsider beating the odds except Costa Rica, if you remember. All in all, I would say that:

  • Playing only minimal/maximal odds will not make your profit positive
  • If you know somehow in advance whether competition is going to be volatile or not, you could minimize your risk

 

Then what, if not min or max?

 

So, we are constraining ourselves if we say we want to pursue only minimum or maximum values. What about X (draw) which is usually somewhere in between. How can we create algorithm to tell us should we play X (and not min/max on favorite or outsider team)? Or does value for X matters? Maybe we should pursue only odds around certain values?

This is exactly my train of thought how I ended up with following analysis. Imagine if we said we want to bet only on odd Y. Now, when you have 3 odds for 1, X, 2, usually none of them will be equal Y. However, some of them will be closer to Y than others. So, what I did is generated hypothetical achieved points, based on all possible odd values Y. Here is simple example, imagine if Y is 4.5. If you have odds 1.1, 4.2 and 5.0, you would bet on 4.2, as it is closest to 4.5. Note that this approach is generalization of minimum/maximum question that everyone is asking about (if we put Y to be low (1.0) or really high (10.0), it is the same as if you bet on minimum or maximum odd, respectively). So, let’s plot now how our points would change based on odd we want to bet:

points_taken_wc2014points_taken_euro2016

On X-axis is odd we want to bet as closely as possible. On Y-axis are hypothetical amount of points if you would bet on those odds. Orange line is equal to number of matches and is boundary to being positive/negative on betting. I also added couple of callout values, so it is easier to see where hills/dips are. Obviously, data sample is very small and there is no statistical significance here. Only thing left (other than adding odds from Euro2012 etc. which I do not plan to do) is to sum those two competition and treat it as bigger one. For example, around odd values 3.x and 4.x are some small hills on both competitions, and my guess was they will be exaggerated on summed:

points_taken

Well, this does makes more sense to me overall:

  • You are rarely positive (above orange line) and I can argue this is just a statistical error
  • Minimum and maximum are leveling to be same
  • There are some peaks and dips around 3 and 4

Conclusion

 

C’mon, you didn’t really believed there is something under the data that will help you win big time?:) With more data (more competition), my take is that this line will flatten itself. This makes sense as odds are nothing but probabilities, and be it 1.01 or 10.0, if you play long enough exact same odd, you will be (almost) at zero. However, if you want to minimize your risk, maybe, just maybe, try playing odds around 3.2 and 4.0 (but avoid odd 3.6 as much as you can:)

Posted in Analitika, Uncategorized | Leave a comment

Statistike B92 vesti i komentara u 2015. godini

Autor ni na koji nači nije povezan sa B92. U tekstu su iznete isključivo činjenice dobijene statističkom analizom. Ni originalni podaci, ni njima dobijeni rezultati nisu modifikovani.

Osnovni podaci

2015. godina je prošla. Sa malim zakašnjenjem, ispod je prikazana osnovna analiza sajta B92 i vesti koje su se našle na njemu, kao i komentara i kategorija. Analizom su obuhvaćene sve vesti i komentari objavljeni na B92, od 01.01.2015. do 31.12.2015. Celokupni izvorni kod scraper-a, kao i cela baza podataka se nalazi ovde.

U 2015. godini, B92 je izbacio dosta vesti, i dosta komentara, evo kratak pregled:

Ukupno vesti 100.971
U proseku, vest na svakih: 5 minuta
Ukupno kategorija: 173
Komentara: 1.643.338
U proseku, komentar na svakih: 20 sekundi
Prosek komentara po vesti: 16.2
Ukupan broj pluseva: 175.415.492
U proseku, u jednoj sekundi je padalo: 5.5 pluseva
Ukupan broj minusa: 70.796.238
U proseku, u jednoj sekundi je padalo: 2.4 minusa

 

Pređena je magična cifra od 100.000 vesti godišnje. Čestitke za B92:) Gledajući broj komentara sa ove liste (a pošto su komentari moderisani), ova statistika govori i da su moderatori imali pune ruke posla (zamislite koliko komentara tek nije prošlo moderaciju).

Vesti

 

Evo koje tipove vesti je B92 objavljivao, po kategorijama:

 

vesti_po_kategoriji

 

Ako se gleda kako je B92 objavljivao vesti na dnevnom nivou, primećuje se porast trenda.
vesti_dnevno

 

Na početku godine su izbacivali 263 vesti dnevno, a na kraju čak 288. Ako se nastavi ovaj trend, do 2021. godine će objavljivati 150.000 vesti godišnje ili preko 400 dnevno (ne znam kakve će to vesti biti, ali se nadam da neće porasti broj vesti u kategorijama “politika” i “hronika”). Na prethodnoj slici se i jasno vidi da broj vesti na dnevnom nivou fluktuira od dana do dana. I tako i jeste – broj “vrhova” na prethodnom grafiku je 52, tj. broj nedelja.

 

Evo kako izgleda nedeljna distribucija vesti:

 

vesti_nedeljno

 

Valjda i B92 odmara vikendima.

 

Mnogo interesantnije od ovoga je videti kakva je distribucija vesti po satima, tj. kad se najčešće objavljuju vesti:

 

vesti_sat

 

Na grafiku se vidi kako je vrhunac vesti oko 11h prepodne, kao i dva peak-a – jedan u 17h i jedan oko 21h. Pretpostavka je da ovo nije slučajno. verovatno je rađena analiza i verovatno ljudi tad i najčešće čitaju vesti.

 

Međutim, znajući od malopre da distribucija vesti po danima nije jednaka, hajde da vidimo opet distribuciju vesti po satu, ali razbijenu po danima:

 

vesti_sat_dan

I zapravo, vidi se razlika. Očigledno je da je peak vesti vikendom drugačiji, tačnije 16h je udarni termin (dok je radnim danima to malo pomereno na 17h). Isto tako, subotom se vidi blagi skok oko 20h (dok je radnim danima on oko 21h), a i nedeljom se takođe vidi blagi skok oko 22h koga nema uopšte drugim danima.

 

A šta su bile najčešće teme na objavljenim vestima? Urađena je analiza reči koje su se pojavljivale u naslovima vesti. Ako izbacimo predloge i veznike (“i”, “ili”, “na”, “u”, “ako” i sl.) i ako se ne pravi razlika po raznim mogućim oblicima pojavljivanja reči (“Vučić”, “Vučića”, “Vučićeva” …), evo je lista najčešćih reči:

 

naslov_reci

 

Pozicija na kojoj se nalazi “SAD” je prilično fascinantna. “Godina” i “dan” su prilično standardni pojmovi, razmišljano je i da se izbace, ali nije na kraju. “Vučić” je i dalje neprikosnoveni vladar medijskog prostora, a godinu je obeležio i sve veći broj “izbeglica”. Interesantno je i da je “Zvezda” ispred “Partizana” globalno, a videćemo kasnije i detalje. “Novak” je uspeo da se ušunja na listu na poslednjem mestu (ovde nisu računata i pojavljivanja reči npr. “Đoković”), mada je lični utisak da je on držao prvo mesto cele godine:)

 

Ako zagrebemo malo više po ovoj listi tako što je razložimo po kategorijama, dobijamo malo veći nivo detalja:

 

naslov_reci_kategorija

 

Ostavljam čitaocu da iznese zaključke za svaku od navedenih kategorija, a ima ih, nije da ih nema.

Komentari

 

Pored vesti, analizirani su i komentari čitalaca. Kao što je gore već navedeno, pričamo o neverovatnoj cifri od preko milion i po komentara ili u proseku 16.2 kometara po vesti. Reći tako nešto a da se ne pokaže distribucija tog broja nije fer, pa evo:

 

distribucija_broja_komentara

 

Ovaj grafik pokazuje koliko vesti ima koliko komentara (sa 0 komentara su oko 24.000 vesti, jedan komentar ima malo preko 10.000 itd.). A evo koje kategorije u proseku izazivaju najviše komentara (u obzir su uzete samo kategorije preko 50 vesti):

 

Kategorija Ukupno vesti Ukupno komentara Prosek komentara po vesti
Eurobasket 378 19041 50.37
US Open 2015 293 13187 45.00
Wimbldon 2015 – Ozmo na travi 47 2052 43.65
Košarka 3704 159725 43.12
Roland Garros 2015 303 12422 40.99
Seks 44 1680 38.18
Politika 5305 198124 37.34
Drugi pišu 80 2822 35.27
Tenis 2462 83489 33.91
Wimbldon 2015 – Vesti 332 10182 30.66
NBA 1075 30372 28.25
Australian Open 2015 372 10011 26.91
Život – Vesti 5157 133710 25.92
Pregled štampe 111 2843 25.61
Nauka 140 3345 23.89

 

U principu, Srbi očigledno najviše vole da komentarišu seks, i to samo onda kad se umore od komentarisanja tenisa – valjda mislimo da smo u ovim oblastima najupućeniji da ostavimo komentar. Na dnu ove liste (nije prikazano ovde) se ubedljivo nalazi Bulevar koji je na preko 2400 objavljenih vesti uspeo da dobije ukupno… 10 komentara.

 

Ako pogledamo kad to ostavljamo komentare, vidimo sličnu distribuciju kao i kod vesti:

 

komentari_dan_nedelje

 

Ovo nam ništa ne govori. Ako uporedimo ovaj grafik sa prethodnim, možemo da vidimo relativan odnos “koliko vesti dođe nekog dana”, a “koliko se te vesti komentarišu”, pa dobijamo:

 

komentari_dan_nedelje_relative

 

Ljudi “ne stižu” da iskomentarišu sve vesti tokom radnih dana, ali zato sve nadoknade vikendima, naročito nedeljom, kad deluje kao da fali vesti. Kad se pogleda slična analiza po satima, kao za vesti, tj. break-down po satima kad ljudi najčešće komentarišu, dobija se slična kriva:

 

komentari_sat

 

Kometari manje-više prate izlaženje vesti. U tu svrhu, napravljen je histogram koji pokazuje posle koliko vremena (u minutima) od objavljivanja vesti dolaze komentari:

 

distribucija_komentara

 

OK, ovde je prikazana distribucija za jedan dan (1440 minuta), pa se ne vidi najbolje maksimum. Kad zumiramo malo bolje, dobijamo:

 

distribucija_komentara_zoom

 

Ispada da najviše komentara na vest dolazi 30 minuta od njenog objavljivanja. Da li je to prosečno vreme čitanja vesti plus pisanje komentara pre nego što se ostavi komentar? Na osnovu komentara koji se mogu pročitati svaki dan na B92 – teško; deluje da nekad ljudi ne pročitaju ni naslov do kraja pre nego što nešto iskomentarišu. A ko su ti komentatori uopšte? Ako pogledamo imena prvih 10 autora sa najviše komentara, dobijamo prilično dosadnu listu:

 

autori

 

Osim što nam govori da su autori najčešće muškarci (štaviše, prvo žensko ime ne kreće tek od 20. mesta), ne možemo da ih povežemo sa konkretnim ljudima. Zato su izbačena sva “uobičajena” imena (gde je primenjena “šac” metoda šta je to definicija uobičajenosti), pa nova lista prvih 15 autora izgleda ovako:

 

autori2

 

Čestitke za “smuleco-a”, ko god bio – izdominirao je sa 5257 napisanih komentara u 2015. godini. Botovi, ne menjajte imena, pa ćete i vi možda biti na ovoj listi. A evo i koji autori ima najbolje komentare, tj. one sa najviše pluseva:

 

Autor Broj komentara Prosek pluseva
marko (dorcol) 53 331
sasacg 84 292
nemanjabb 220 264
lion 128 251
markiz 83 242
theriddler 54 241
dexr 72 240
gajetano 190 239
expx 52 238
paspalj 51 234

 

U obzir su uzeti samo autori sa preko 50 komentara. A evo to isto, samo za najomraženije autore:

 

Autor Broj komentara Prosek minusa
herr wolf 52 -253
menader 78 -220
ruža 66 -219
tamni vilajet 82 -214
baba 52 -198
vanja petrovic 53 -185
antiparazit 53 -180
fedex1 58 -178
zimzeleni 156 -174
dexr 72 -171

 

A koji su to komentari najviše pogodili čitaoce da im oni daju plus. Evo je lista top 10 komentara:

 

Vest Autor Komentar Pluseva
Stefanovic: Vucic prošao poligraf, Branko je Saša aco haha imali smo svasta u proteklih 25 godina ali ovo je neponovljivo 6628
Stefanovic: Vucic prošao poligraf, Branko je Saša Kol Pretpostavljam sa najboljim ocenama! :-D 5432
Vucic: Ne dam Gašica i Loncara Bane Kakav demagog… 5359
Stefanovic: Vucic prošao poligraf, Branko je Saša Mxyed A zašto nije bilo direktnog prenosa ispitivanja ? :) 5171
Vucic: Ne dam Gašica i Loncara …. ako ne das njih,onda ti daj ostavku! 5140
Prostakluk ministra Gašica / VIDEO Persa To je on! To su oni! 4961
Vucic: Ne dam Gašica i Loncara strahinja Šta smo mi bogu zgrešili? 4494
Vucic: Ne dam Gašica i Loncara grbovic Nije problem sto je vojska htela da spase dete, vec je problem sto naredjenje izdaje nestrucan kadar. Dosta vise demagogije. Sta mislite da je narod lud, da ne zna da je zarad politickih poena nastradalo 6 osoba. A ti Vucicu ne moras da ih das. Narod ce Vam sve reci na sledecim izborima. 4462
Prostakluk ministra Gašica / VIDEO Miki Ne razumem u cemu je problem?! Sta ocekivati od takve osobe, koja je iz kafane i gradilista dosla u politiku na neposten nacin. Nije odgovarao za poginule u helikopteru, zasto bi mu bio problem da bilo kome bilo sta kaze. Sutra ce se pojavi i ubedi svoje glasace da je to sve umontirano, namesteno i izvuceno iz konteksta. 4300
Toni Bler u Srbiji, ministri cute Veteran Branio sam svoju zemlju 1999. god od NATO agresora, ciji je lider bio i Toni Bler. Osecam se osramoceno danas. 4282

 

I ista takva lista za najomraženije komentare (sa najviše minusa):

 

 

Hall of Fame

 

I na kraju, napravljen je pokušaj da se izvadi lista “najpozitivnijih” i “najnegativnijih “vesti, i probano je sa dosta raznih pristupa, ali nikad nije dobijena neka smislena lista. Da li su to vesti koje imaju najviše pluseva na komentarima, ili one koje imaju najviše prosečno pluseva, ili one kojima je odnos pluseva i minusa najveći – suština je da nema dobre metrike da se ovo nađe. Ipak, dok je ovo traženo, nađene su neke vesti koje od ostalih iskaču po raznim kriterijumima, pa će one biti prikazane. Ove vesti takođe daju dobru retrospektivu godine. To je sve, uživajte!

 

Vesti sa preko 1000 komentara

 

 

Vesti sa preko 150.000 pluseva na komentarima

 

 

Vesti sa preko 120.000 minusa

 

 

Vesti sa preko 600 pluseva u proseku na komentarima

 

Vesti sa preko 650 minusa u proseku na komentarima

 

Vesti sa preko 110.000 razlike između pluseva i minusa u komentarima

 

Vesti sa preko 25.000 razlike između minusa i pluseva u komentarima

 

Vesti sa preko 500 razlike između pluseva i minusa u komentarima u proseku

 

Vesti sa preko 300 razlike između minusa i pluseva u komentarima u proseku

Posted in Analitika, Politika | Tagged , | 10 Comments

Visualizing world’s births and deaths

All data presented here is available as spreadsheet.

World population grows exponentially. Can we graph accurately world’s births and deaths since the dawn of the civilization? Of course not, but in this post I will try something (that I don’t think) anyone tried before. Idea is simple – every wikipedia article about a person has a category that is like “YYYY births” and “YYYY deaths” (if that person is dead). We can use this metadata to create a graph depicting births and deaths  in that specific year. I used Pywikibot to fetch this data. Here is the source code:

#!/usr/bin/env python
import wikipedia as pywikibot
import catlib
 
def main():
    site = pywikibot.getSite(code='en')
    for year in range(1, 2010):
        #cat = catlib.Category(site, "%s:%s" % (site.namespace(14), "%d_deaths" %year))
        cat = catlib.Category(site, "%s:%s" % (site.namespace(14), "%d_births" %year))
        print "%d - %d" % (year, len(cat.articlesList()))
 
if __name__ == '__main__':
    main()

And as already said, here is the spreadsheet with all the data. Before presenting results, just a small disclaimer – this approach has several disadvantages. First of all, results are collected from English Wikipedia, and as huge as it is, it is still western-centric, so probably in this statistics we are missing a lot of Chinese and other eastern world related persons. Secondly, a lot of people, especially those born in the distant past don’t have accurate year of birth or death. In a way, presented result will reflect our knowledge of the historical people’s life more than it will present world population growth, but some interesting results can be observed nonetheless. Thirdly, these are statistics just for notable persons, but I think, it can scale to whole population as well. Please feel free to comment whatever you see I missed or to further explain things on graphs where I don’t have explanations. All the data presented here is up to year 2009.

Births

This is graph of people’s births. On the x-axis are years, and on y-axis are number of births (click to enlarge):

births

Graph presented above is not very useful, so we’ll construct better one. Graph shown below is constructed by taking averages of births in range of 10 years (to see general trends) and is in logarithmic scale (due to the exponential nature of this kind of data). It reveals much more now (click to enlarge):

births-log

Now that we have these graphs, let’s see what we can conclude from them. We’ll start chronologically:

  • (red logarithmic graph) There is large rise of births around year 170, mostly all of them are Chinese military generals (you can see that here and here). I don’t know Chinese history, but they all relate to period of Three Kingdom era. Question now is – is this era period of great development in China or  is this the period when nothing important happened in Europe?
  • (red logarithmic graph) Around 600-1100 you can see there is no rise in birth’s graph. Of course, there should be, because population growth was constant, so I think this could be explained by Dark age period.
  • (red logarithmic graph) You can see rise in the first half of 17th century that I can’t explain. Is it large rise or large fall that happened after? Can that large fall be because of some catastrophic events like plague in Europe at that time? Or, there is large, but century long continuous rise because of also some large, but century long continuous catastrophe? Can baby boomer generation happen, but in large scale, spanning for decades? Or maybe it is just a pinnacle of renaissance, so there was a lot of famous people at that time?
  • (blue, linear graph) You can see very large rise in births after WWII (concrete year is 1947, you can see that in spreadsheet). I think this is very good visualization of baby boomer generation.
  • (blue, linear graph) Highest peak in births is around 1979-1985 (largest number of people born in Wikipedia is in 1982.), so I guess that you can, looking at this, see what is the most probable year of one’s affirmation and recognition. If you’re older than this, then your chances to become famous are becoming slimmer and slimmer every day:)

Deaths

Let’s take a look on number of deaths over the years. Here’s a linear graph (click to enlarge):

deaths

And here’s the same graph, but averaged in 10 years period and in logarithmic scale (click to enlarge):

deaths-log

Some observations I came up with:

  • (red logarithmic graph) The first thing you notice on this graph is a large peak around year 304. Reason is Diocletian persecution of Christians that happened that year and a large number of people that will later become Christian martyrs died. See for yourself.
  • (red logarithmic graph) Also interesting is a large drop of deaths around year 440 for which I really don’t have an explanation.
  • (red logarithmic graph) As in birth’s graph, here we also see a large rise in deaths between 16th and 17th century (or a large drop of deaths after that?) which  is also puzzling for me.
  • (blue, linear graph) Sudden jump around 1914-1918 is pretty clear. Deaths of millions, greatest tragedy ever, visualized as just a few pixels…
  • (blue, linear graph) Also jump around 1938-1945 shows how many great people died in WWII (and also millions of them unknown, that don’t have their place in Wikipedia…)
  • (red logarithmic graph) In contrast to birth’s graph that drops rapidly after 1985., graph of deaths just continues to grow, logically.

Is there anything else you can add to this observations that I missed? Can you explain better than me slopes in these graphs? Let’s squeeze all the facts we can from these data!

Posted in Analitika, Programiranje, Python | Tagged , , | 1 Comment

Prosečne cene stanova u Beogradu 2. deo (Heat mapa)

Dokaz da imam najbolju ženu na svetu se ne ogleda samo u činjenici da mi je rodila najbolje i najlepše dete na svetu i da je ona moj anđeo čuvar (kako metaforčki, tako i fizički – desilo se par puta da sam mogao da nastradam da nije bilo nje, ali hoće to tako kod rasejanih budala), već i u činjenici da ona može da isprati svaku moju ideju, ma koliko debilna bila:)

Čim sam okačio prethodni post na blogu u vezi prosečnih cena stanova u Beogradu, ona ga je prva pročitala, tražila konekciju na bazu i uzela nešto da čeprka. Vratila se sa heat mapom prosečnih cena stanova u Beograda. Ja sam napisao tamo da bi bilo interesantno to napraviti, a ona je uzela i actually to napravila! Nisam sad baš siguran da li se ovo zove heat mapa ili je ovo nešto drugo, ali ovo je definitivno neka lepa mapa gde su prikazani svi stanovi u ponudi, sa veličinom ponude i prosečnim cenama kvadrata.

Boja označava prosek cena u tom delu grada, a veličina krugova označava broj stanova u ponudi za taj deo grada. Klik na sliku za veću verziju. Uživajte (i zahvalite se njoj što čitate i gledate ovo:)!

 

mapa-v2

 

Tehnički detalji (koga interesuje)

Mapa je rađena u R-u i korišćen je `ggmap` paket u poluautomatskom modu rada (nešto što Google nije mogao da pronađe je moralo ručno). To je ono što ja znam, za sve ostalo morate pitati eksperta (e-mail adresa poznata redakciji:).

Posted in Analitika, Programiranje, SQL | Tagged , , , | 4 Comments

Prosečne cene stanova u Beogradu

Trenutno sam u pripremama početne faze započinjanja razmatranja mogućnosti kupovine stana. Kao što se može primetiti iz prethodne rečenice, imam još da radim oko ovoga, ali nekako mora da se počne.

E, sad, kao svaki pravi mali dobri programer, prvo što mi je palo na pamet da mora da se uradi jeste da se obiđu svi domaći sajtovi za nekretnine i da se sa njih skinu (scrape-uju) svi stanovi za offline detaljnu analizu. Znam, znam, ljudi kupuju stanove i bez da urade matematičku analizu i data mining, ali evo zašto ovo ima svojih prednosti:

  • Mnogo bolje filtriranje – ja otprilike imam predstavu šta tražim, ali kada bih koristio samo veb sajtove agencija za filtriranje, morao bih da pregledavam na hiljade stanova
  • Trenutna detekcija novoponuđenih stanova – kad se skripta ponovo pokrene, tačno znate koji su novi stanovi u ponudi
  • Trenutna detekcija smanjenih cena stanova – kad se skripta pusti da prođe ponovo za sve stanove, vrlo lako može da primeti da li je cena pala ili ne
  • It’s fun:) – verovatno znate onaj vic “zašto pas liže svoja jaja?”. “Zato što može”

Tehnički detalji (koga interesuje)

Skripta je napisana u Python-u, skidani su stanovi sa sajtova mojkvadrat.rs i halooglasi.com, a za svaki posebno je trebalo oko 200 linija koda. Korišćene tehnologije su: SQL Azure, BeautifulSoup, urllib3 i pyodbc. Ceo kod i dump baze se nalazi na: https://github.com/stalker314314/ScrapeStanovi.

TODO lista

  • Uraditi merge-ovanje stanova od različitih source-ova (detekcija duplikata)
  • Dodati još source-ova
  • Detekcija da li je stan u ponudi od strane agenta ili direktno
  • Heat mapa Beograda sa prosečnim cenama stanova (ovo sam probao da nađem na R repozitorijumima, kao i na Google Fusion Table repozitorijumima i nisam, nažalost, našao nikakve postojeće mape Beograda, a ne pravi mi se ovo od nule)

Prosečne cene stanova

E, sad ono zbog čega je ceo ovaj tekst i napisan. Kada je skripta skinula sve stanove, nad njima mogu da se rade razne analize. Jedna jako očigledna, a vrlo interesantna je da se pogleda koje su prosečne cene kvadrata po delovima grada. Kad su podaci već skinuti, ovo je trivijalno, a za vas evo ovde celu liste na pregled, nadam se da će vam biti zanimljivo. Uživajte!

Opština Deo Cena kvadrata [€/m2]
Stari grad Knez Mihailova 2528
Stari grad Trg Republike 2404
Stari grad Francuska 2286
Stari grad Studentski trg 2230
Novi Beograd YUBC 2089
Stari grad Kosancicev venac 2057
Stari grad Toplicin venac 1999
Stari grad Dom omladine 1958
Stari grad Kralja Petra 1948
Novi Beograd Blok 67 (Belvil) 1946
Vracar Hram svetog Save 1941
Vracar Krunska 1938
Stari grad Skupština 1887
Stari grad Terazije 1874
Stari grad Obilicev venac 1865
Vracar Cvetni trg 1861
Palilula Mašinski fakultet 1852
Vracar Kalenic pijaca 1823
Stari grad Kalemegdan 1814
Vracar Karadordev park 1796
Novi Beograd Arena 1792
Stari grad Centar 1786
Vracar Slavija 1763
Voždovac Jove Ilica 1749
Savski venac Kraljice Natalije 1742
Savski venac Dedinje 1736
Stari grad Gundulicev venac 1736
Palilula 27. marta 1731
Palilula Tašmajdan 1721
Stari grad Dunavski kej 1702
Stari grad Atelje 212 1696
Savski venac Nemanjina 1689
Savski venac Svetozara Markovica 1680
Vracar SC Vracar 1673
Stari grad Skadarlija 1669
Stari grad Takovska 1665
Vracar Pravni fakultet 1660
Stari grad Dorcol 1659
Stari grad Trg Nikole Pašica 1648
Savski venac Klinicki centar 1648
Savski venac Resavska 1645
Zvezdara Uciteljsko naselje 1633
Vracar Neimar 1629
Vracar Gradic Pejton 1624
Vracar Cubura 1620
Stari grad Cara Dušana 1619
Stari grad Bajlonijeva pijaca 1618
Voždovac Hotel M 1616
Stari grad Politika 1611
Vracar Bulevar kralja Aleksandra 1605
Palilula Palilulska pijaca 1596
Vracar Crveni krst 1594
Savski venac Centar 1576
Stari grad Kopitareva gradina 1568
Savski venac Senjak 1537
Zvezdara Vukov Spomenik 1531
Savski venac Brankova 1525
Savski venac Kneza Miloša 1523
Zvezdara Ðeram pijaca 1522
Vracar Beogradska 1517
Savski venac Balkanska 1512
Novi Beograd Blok 29 1498
Palilula Centar 1487
Novi Beograd Blok 24 (Super Vero) 1486
Palilula Poštanska štedionica 1484
Vracar Južni bulevar 1479
Zvezdara Lion 1472
Palilula Botanicka bašta 1467
Novi Beograd Sava centar 1465
Voždovac Lekino brdo 1462
Palilula Hadžipopovac 1460
Novi Beograd Blok 30 (B92) 1455
Zvezdara Dimitrija Tucovica 1451
Novi Beograd Blok 22 1444
Stari grad Zeleni venac 1444
Voždovac Centar 1433
Savski venac Ekonomski fakultet 1430
Zemun Retenzija 1426
Voždovac FON, Bilecka 1424
Zemun Kej 1419
Novi Beograd Novi Merkator 1416
Voždovac Bioskop Voždovac 1408
Palilula Profesorska kolonija 1403
Savski venac Palata pravde 1397
Novi Beograd Hotel Jugoslavija 1396
Novi Beograd Blok 21 1394
Stari grad Savamala 1393
Zvezdara Bulbulder 1391
Voždovac Bulevar oslobodenja 1388
Zvezdara Lipov lad 1387
Novi Beograd Blok 34 (Carina – Studentski grad) 1381
Voždovac Vojislava Ilica 1377
Zvezdara Slavujev venac 1374
Novi Beograd Blok 23 1374
Novi Beograd Blok 19a 1373
Zvezdara Denkova bašta 1366
Novi Beograd Blok 3 1364
Zemun Karadordev trg 1354
Novi Beograd Blok 2 1352
Palilula Cvijiceva 1351
Zvezdara Gradska bolnica 1351
Voždovac Autokomanda 1345
Zvezdara Cvetkova pijaca 1333
Novi Beograd Fontana 1333
Cukarica Golf 1331
Novi Beograd Opština 1329
Voždovac Voždovacka crkva 1328
Savski venac Sarajevska 1325
Rakovica Stari Košutnjak 1324
Voždovac Trošarina 1315
Zvezdara Bulevar kralja Aleksandra 1312
Savski venac Humska 1311
Novi Beograd Blok 33 1309
Voždovac Vitanovacka 1285
Novi Beograd Stari Merkator 1282
Voždovac Darvinova pošta 1279
Novi Beograd Blok 4 (Politehnicka akademija) 1276
Voždovac Šumice 1274
Cukarica Košutnjak 1272
Voždovac Vojvode Stepe 1270
Cukarica Banovo brdo 1260
Zvezdara Olimp 1258
Novi Beograd Blok 70a 1246
Palilula Bulevar despota Stefana 1242
Novi Beograd Blok 44 (TC Piramida) 1242
Cukarica Suncana padina 1241
Zvezdara Severni bulevar 1236
Novi Beograd Blok 37a 1236
Novi Beograd Bežanijska kosa 3 1235
Novi Beograd Blok 38 1233
Savski venac Karadordeva 1231
Novi Beograd Blok 28 1225
Voždovac Dušanovac 1220
Novi Beograd Blok 37 1214
Zvezdara Zvezdara 2 1213
Zemun Centar 1205
Novi Beograd Bežanijska kosa 1 1202
Novi Beograd Blok 70 (kineski tržni centar) 1199
Voždovac Saobracajni fakultet 1194
Zvezdara Kluz 1193
Cukarica Filmski grad 1193
Zvezdara Rudo 1186
Novi Beograd Blok 62 1182
Voždovac Ustanicka 1180
Novi Beograd Paviljoni 1177
Novi Beograd Bežanijska kosa 2 1175
Novi Beograd Blok 45 (TC Enjub) 1167
Zemun Donji grad 1164
Voždovac Kumodraška 1163
Novi Beograd Blok 63 1161
Cukarica Cukaricka padina 1151
Novi Beograd Tošin bunar 1147
Novi Beograd Stara Bežanija 1146
Voždovac Konjarnik 1144
Zemun Cara Dušana 1139
Cukarica Cerak vinogradi 1135
Novi Beograd Blok 64 1135
Palilula Bogoslovija 1128
Voždovac Zaplanjska 1124
Novi Beograd Blok 61 1122
Zemun Ugrinovacka 1120
Zemun Save Kovacevica 1118
Zemun Kalvarija 1108
Novi Beograd Dr Ivana Ribara 1099
Voždovac Medakovic 3 1077
Voždovac Banjica 1077
Zemun Meandri 1070
Zvezdara Zvezdarska šuma 1070
Voždovac Farmaceutski fakultet 1066
Zemun Prvomajska 1064
Cukarica Cerak 1063
Zemun Marija Bursac 1062
Cukarica Žarkovo 1045
Zemun Gornji grad 1044
Voždovac Brace Jerkovic 1043
Voždovac Medakovic 2 1038
Zvezdara Cvetanova cuprija 1014
Palilula Višnjicka Banja 1010
Voždovac Medakovic 1 1005
Zvezdara Mirijevo 1001
Rakovica Skojevsko naselje 1000
Zvezdara Zeleno brdo 997
Rakovica Vidikovac 995
Rakovica Kanarevo brdo 995
Palilula Karaburma 993
Palilula Calije 993
Zemun Galenika 983
Zemun Nova Galenika 979
Cukarica Julino brdo 975
Rakovica Miljakovac 972
Zemun Novi grad 964
Zvezdara Veliki Mokri Lug 957
Voždovac Medakovic padina 952
Voždovac Kumodraž 947
Rakovica Novo Skojevsko naselje 940
Rakovica Labudovo brdo 935
Zvezdara Mali Mokri Lug 934
Cukarica Bele vode 922
Rakovica Centar 904
Rakovica Petlovo brdo 903
Rakovica Kneževac 862
Zemun Batajnica 860
Cukarica Železnik 860
Palilula Višnjica 859
Rakovica Vidikovacka padina 839
Novi Beograd Ledine 828
Palilula Borca 810
Voždovac Jajinci 809
Zemun Zemun polje 800
Zemun Altina 785
Zemun Kamendin 761
Palilula Krnjaca 759
Rakovica Resnik 750
Grocka Kaluderica 748
Palilula Kotež 734
Cukarica Sremcica 718
Obrenovac Obrenovac (mesto) 707
Mladenovac Mladenovac (mesto) 624
Palilula Padinska skela 536
Barajevo Barajevo (mesto) 492
Posted in Analitika, Programiranje, Python | Tagged , , | 5 Comments