>> wybierz styl >> es :: ns :: bs

Weblog Tomasza Przechlewskiego [Zdjęcie T. Przechlewskiego] [[Ikona]]


scrum
random image [Photo gallery]
Zestawienie tagów
1-wire | 18b20 | 1wire | 2140 | 3rz | alsamixer | amazon | anniversary | antypis | apache | api | arm | astronomy | asus | atom.xml | awk | aws | balcerowicz | balta | bash | berlin | bibtex | bieszczady | biznes | blogger | blogging | blosxom | borne-sulinowo | breugel | bt747 | canon | cedewu | chello | chown | chujowetaśmy | cmentarz | contour | cron | css | csv | curl | d54250wykh | debian | dejavu | dhcp | dht22 | dia | docbook | dom | ds18b20 | dyndns | dynia | ebay | economy | ekonomia | elka | elm | emacs | emacs23 | english | ess | eu | excel | exif | exiftool | f11 | fc | fc11 | fc15 | fc5 | fc8 | fedora | fedora21 | ffmpeg | finepix | firefox | flickr | fontforge | fontspec | fonty | fop | foto | france | francja | fripp | fuczki | fuji | fuse | gammu | garmin | gawk | gdynia | geo | georgia | gft | git | github | gmail | gnokii | gnus | google | googlecl | googleearth | googlemaps | gphoto | gphoto2 | gps | gpsbabel | gpsphoto | gpx | gpx-viewer | greasemonkey | gruzja | grzyby | haldaemon | handbrake | historia | history | hitler | holocaust | holokaust | hpmini | humour | iblue747 | ical | iiyama | ikea | imap | inkscape | inne | internet | j10i2 | javascript | jhead | k800i | kamera | kml | kmobiletools | knuth | kod | kolibki | komorowski | konwersja | krutynia | kuchnia | latex | latex2rtf | latex3 | lcd | legend | lenny | lesund | lewactwo | liberation | linux | lisp | lisrel | litwa | logika | lwp | mapsource | marvell | math | mathjax | mazury | mbank | mediolan | mencoder | mh17 | michalak | microsoft | monitor | mp4box | mplayer | ms | msc | msw | mtkbabel | muzyka | mymaps | mysql | nanopi | natbib | navin | neo | neopi | netbook | niemcy | niemieckie zbrodnie | nikon | nowazelandia | nuc | nxml | oauth | oauth2 | obituary | okular | olympus | ooffice | ooxml | opera | otf | otftotfm | other | overclocking | panoramio | pdf | pdfpages | pdftex | pdftk | perl | photo | photography | picasa | picasaweb | pim | pine | pit | plotly | pls | plugin | po | politics | polityka | polsat | postęp | powerpoint | prelink | problem | propaganda | pstoedit | putin | python | r | radio | random | raspberry pi | relaxng | router | rower | rowery | rpi | rsync | rtf | ruby | rugby | russia | rwc | rwc2007 | rwc2011 | rzym | samba | sem | sheevaplug | sienkiewicz | signature | sks | skype | skytraq | smoleńsk | srtm | ssl | statistics | stats | statystyka | stix | svg | svn | swornegacie | szwajcaria | terrorism | tex | texgyre | texlive | thunderbird | tomato | tourism | tramp | trang | truetype | ttf | turystyka | tusk | tv | tv5monde | twitter | typetools | ubuntu | udev | umap | unix | upc | updmap | ups | utf8 | varia | video | vienna | virb edit | vostro | wammu | wdc | wdfs | webcam | webdav | wh2080 | wiedeń | wikicommons | wilno | windows | windows8 | wine | wioślarstwo | word | wordpress | wrt54gl | wtyczka | ww2 | www | wybory | wybory2015 | włochy | xemex | xetex | xft | xhtml | xine | xml | xmllint | xsd | xslt | xvidtune | youtube | yum | zakopane | zakupy | zdf | łeba | świdnica
Pobrania via google: [[Ikona]]
Archiwum
Inne blogi
N. Walsh | Morten H. Frederiksen | B. Clementson | prawo.vagla.pl | F. Hecker | M. Olson | J. Tennison | J. Clark | M. Nottingham | M. Shuttleworth | T. Isakowicz-Zalewski | J. Anglim | José A. Ortega Ruiz Modern Perl
Inne tematyczne
Ashwin Amanna | wiesia.nets.pl | Wojt | rwm.org.pl | DataBlog | Revolutions | Learning R | A. Gelman | C. Nel | J. Vogelgesang | ubl.xml.org/ | J.D. Long |
O stronie
wykorzystywany jest blosxom plus następujące wtyczki: tagging, flatarchives, rss10, lastbuilddatexhtmlmime. Niektóre musiałem dopasować nieco do swoich potrzeb. Więcej o blosxom jest tutaj
Subskrypcja
RSS 1.0
Moja lista rekomendowanych książek na temat Holokaustu

Żeby nie było że mam fiksację i żem Germanofob (ci co przeczytali poprzedni wpis mogli nabrać takich podejrzeń), lista książek na pasjonujący mnie temat 2WŚ/Holokaustu:

Raul Hilberg: Sprawcy, Ofiary, Świadkowie. Zagłada Żydów 1933--1945 (tłumaczenie J. Giebułtowski) Centrum Badań nad Zagładą Żydów IFiS PAN/Cyklady, Warszawa 2006;

Raul Hilberg: Pamięć i polityka. Droga historyka Zagłady (tłumaczenie J. Giebułtowski) Centrum Badań nad Zagładą Żydów IFiS PAN/wydawnictwo Cyklady, Warszawa 2006;

Christopher R. Browning: The origins of the Final Solution. The evolution of the Nazi Jewish Policy, September 1939--March 1942, University of Nebrasca Press; Polskie tłumaczenie: Geneza ostatecznego rozwiązania. Ewolucja nazistowskiej polityki wobec Żydów. Wrzesień 1939--marzec 1942 Wydawnictwo Uniwersytetu Jagiellońskiego 2013;

Christopher R. Browning: Zwykli ludzie. 101. Policyjny Batalion Rezerwy i ostateczne rozwiązanie w Polsce Bellona 200 (nie do dostania nawet na Allegro!);

Christopher R. Browning: Pamięć przetrwania. Nazistowski obóz pracy oczami więźniów Czarne 2012;

Isabel Heinemann: Rasa, ziemia, niemiecka krew. Główny Urząd Rasy i Osadnictwa SS i nowy porządek rasowy Europy Muzeum II Wojny Światowej w Gdańsku, Gdańsk 2014;

Nikolaus Wachsmann: Historia nazistowskich obozów koncentracyjnych Świat Książki 2016;

Ulrich Herbert: Werner Best. Studium biograficzne (tł. Magdalena Kurkowska) Wiedza Powszechna, Warszawa 2007

Wszystkie powyższe są świetne. Dwaj pierwsi autorzy to Amerykanie (well, Hilberg to Austriacki Żyd, a do USA trafił po tym jak po Anslussie Austrii rodzina wyjechała do Ameryki); Heinemann i Wachsmann są młodymi (oboje urodzeni w 1971 r) a Herbert nieco starszym (ur. 1951 r) historykami Niemieckimi piszącymi uczciwe książki na temat swojej trudnej historii (i dlatego nie jestem Germanofobem a wręcz przeciwnie).

Na liście nie ma żadnych Grosów, Libionek czy innych Danieli Goldhagenów (czytaliście coś ww.? No to zmarnowaliście czas). Arendt z jej bestsellerem o Eichmannie też nie ma (wg. Hilberga zżynała od niego i faktycznie jak się przeczyta SOŚ -- która została napisana wcześniej -- to książka Arendt niewiele wnosi, jeżeli coś w ogóle). Nb teza Arendt iż każdy może być masowym mordercą (banalność zła) jest moim zdaniem (i nie tylko moim) fałszywa: pierdoły i lenie nie mogą, a takich jest większość. Eichmann wcale nie był zwykły--był utalentowanym zarządcą, do tego niezwykle pracowitym. Można co innego zauważyć, że osobnik jest wybitnym fachowcem (w pewnej dziedzinie) a tak w ogóle jest debilem-- coś jak mentor Arendt, wybitny filozof, ale zadeklarowany nazista Martin Heidegger.

url | Fri, 27/01/2017 05:22 | tagi: , , , , ,
Polskie obozy zagłady

Niemcy od lat bezczelnie promują w mediach zwrot polskie obozy śmierci/zagłady. Jak im się powie, że to bzdura to oni na to że to skrót myślowy. Wiadomo że nie, bo co to za "polski obóz" Auschwitz, w którym zginęło 150 tys Polaków a literalnie żaden organizator/nadzorca z Polską nie miał nic wspólnego, a z Trzecią Rzeszą (czyli współcześnie z RFN oraz Austrią; w świetle prawa międzynarodowego oczywiście)-- wszystko.

Były więzień niemieckiego obozu Auschwitz Karol Tendera wystąpił z pozwem przeciwko ZDF w związku z jej internetowymi publikacjami zawierającymi określenie polskie obozy zagłady Majdanek i Auschwitz. a 22 grudnia 2016 r. krakowski Sąd Apelacyjny wydał prawomocny wyrok, na mocy którego ZDF powinna przeprosić Tenderę za użycie tych sformułowań i opublikować na swojej głównej stronie internetowej przeprosiny. Te ukazały się zaraz po ogłoszeniu wyroku, tyle, że według p. Tendery nie spełniały wymogów (z tego co mi się wydaje nie były na przykład zamieszczone na głównej stronie). W rezultacie tzw. polscy internauci zainicjowali zmasowaną akcję polegającą na publikowaniu w różnych mediach społecznościowych wpisów informujących o prawdziwym przebiegu wydarzeń.

No to ja się też dołączam do akcji na mój skromny, uczciwy sposób jak mawiał elektryk Hagen w powieści Das Boot (Lothar-Gunther Buchheim, s.148, tł. Adam Kaska, Bellona 2009).

Jak już jestem przy głosie to wyjaśniam, że specyfiką 3Rz był labirynt urzędów, z których każdy miał własne obozy. Obozy koncentracyjne, których pierwotną funkcją nie było masowe mordowanie, ale zastraszanie/izolowanie (KL) podpadały pod (WVHA). Obozy zagłady powstały w  wyłączntm celu sprawnego zamordowania niechcianej społeczności żydowskiej, a organizował je właściwy dla terytorium gdzie powstały (wyższy) dowódca SS i Policji (SSPF/HSSPF) czyli SSPF Globocnik (Lublin), któremu podlegały Treblinka/Sobibór/Bełżec oraz SSPF Koppe (Poznań) ze swoim Kulmhofem. BTW Koppe, którego Kulmhof było pionierską instalacją spokojnie dożył do 1975 r. w eNeRFju, a nie w żadnej tam Argentynie (cf. Wilhelm Koppe) co jest wśród niemieckich zbrodniarzy regułą, a nie wyjątkiem. Globocnik (Austriak nie Niemiec) niepotrzebnie popełnił samobójstwo--też by się pewnie wymigał... Ciekawostką jest, że nie było formalnej współpracy czy koordynacji pomiędzy WVHA a SSPF (co by świadczyło że nie było mitycznego master planu w temacie zagłady Żydów; była ogólna idea że mają zniknąć z 3Rz i improwizowana realizacja: każdy zainteresowany urząd działał jak umiał), a ofiary dostarczał jeszcze inny urząd -- RSHA/Eichmann -- (ah ta wspaniała Niemiecka koordynacja).

IPN opublikował mapkę niemieckich obozów zagłady/KL, na której na czerwono są KL a na czarno obozy zagłady (oryginał tutaj). Auschwitz/Birkenau/Majdanek formalnie były KL i podpadały pod WVHA, to że są na czarno wynika z faktu że były "wielofunkcyjne"... Podobnie wielofunkcyjne były Stutthof i Mathausen (formalnie KL) -- miały komory gazowe, w których mordowano ludzi -- ale nie są na czarno na mapie zapewne dlatego, że robiono to na mniejszą skalę niż w tych bardziej znanych z tego procederu...

Tak przy okazji: Niemiecka Gazeta dla Polaków Tomasza Lisa uważała w związku z "aferą ZDF" -- zupełnie przypadkowo zapewne -- za celowe przypomnieć o obozach na Śląsku zakładanych przez NKWD i polskich komunistycznych kolaborantów bezpośrednio po wojnie (kiedy Polskę można z całą pewnością uważać za kraj okupowany przez wrogie mocarstwo a zarządzany przez zainstalowany przez to mocarstwo rząd złożony z renegatów) typu kapitan Morel (mimo, że to tylko jeden awans -- nie mylić z majorem Szechterem, bo się autorytet zdenerwuje), określając je -- a jakże -- mianem "polskie".

Abstract for non-Polish readers

German public television station ZDF called the German concentration camps at Auschwitz and Majdanek/Lublin as "Polish death camps". For this action ZDF was sued by former Auschwitz prisoner Mr. Karol Tender and lost that case in court. The court ordered ZDF to publish an apology on their main page and to leave it visible for 30 days.

ZDF published required apology very discreetly, at the very bottom of their website with the title Karol Tenders Apology. It is visible only upon clicking the title. For this reason Polish Internet community declared (propaganda) war on ZDF on this issue (look for #GermanDeathCamps hashtag).

url | Wed, 25/01/2017 17:23 | tagi: , , , , ,
Minął rok obrony demokracji w PL

Rok zleciał na obronie demokracji, wypada podsumować.

Przyglądam się temu całemu KODowi z pewną ciekawością, ale bez specjalnego zdumienia. Z punktu widzenia motywacji uczestników można ich podzielić na następujące kategorie (IMHO oczywiście):

1) #Zafixowani: hejterzy (zwykle nie potrafią się do tego przyznać) zafiksowani na Kościele Katolickim/PiS/Kaczyńskim (PISofobia), dla nich KOD to sposób na przyjemne spędzania wolnego czasu w gronie im podobnych (stąd manifestacja KOD mało przypominają protesty -- wszyscy wiecznie uśmiechnięci);

2) #ŁowcyJeleni: politycy byłej władzy lub aspirujący do niej, media/celebryci przez kasę związani z poprzednią władzą np. GW/Polityka/Newsweek. Także różnej maści kombinatorzy starający się zarobić oferując różne usługi dużej grupie naiwnych/z problemami psychicznymi (co nie oznacza choroby--PISofobia nie jest chorobą, podobnie jak inne fobie) ludzi.

3) #Durnie: autentycznie przekonani, że Polska po wyborach 2015 obrała kurs na dyktaturę/faszyzm/demokraturę itp...; Zaczynają rozmowę Nie wolno pozwolić na demontaż państwa lub podobnym tekstem.

4) #Inni: wszyscy pozostali (w tym ludzie, którzy wydają się niezrównoważeni psychicznie i/lub funkcjonariusze stosownych służb).

Liczebność poszczególnych grup oceniam jak w powyższej wyliczance, przy czym czy #zafiksowani są liczniejsi niż #łowcyjeleni czy odwrotnie, to już nie jestem pewien. Do tego kategorie #1 oraz #3 niekoniecznie są rozłączne. Działania grup 1 oraz 2 oceniam jako racjonalne, grupy 3 jako nieracjonalne (stąd pejoratywne #durnie), zaś z grupą 4 jest pod tym względem różnie (niezrównoważeni są z definicji nieracjonalni; no a ci z służb cóż--chodzą do roboty po prostu).

Nawiasem ze znanych mi 2 osób (osobiście, nie z TV), zaangażowanych w tzw. obronę demokracji, jeden pasuje mi do kategorii #1 a drugi niestety do #3.

PS: ten tekst powstał jakieś dwa tygodnie temu. W tzw. międzyczasie lider ww. Komitetu dokonał tzw. samozaorania, ale to nie zmienia mojej klasyfikacji: Mateusz Kijowski (kategoria #2, aspirujący do koryta/łowca jeleni, ale niegramotny-amator więc game-over)

url | Fri, 06/01/2017 06:27 | tagi: , , ,
Paradoks postępaka


Widzę w Internetach dużo kuriozalnych wpisów, w tym a zwłaszcza popełnionych przez ludzi deklarujących tzw. postępowe poglądy (przykłady z niejakiego pana Wimmera -- dumnie przyznającego się do bycia (de)funkcyjnym członkiem tzw. Komitetu Obrony Demokracji -- w załączeniu).

Zrekapitulujmy zatem fakty:

#1: 25 grudnia 2016 wojskowy samolot transportowy lecący z podmoskiewskiego lotniska wojskowego Czkałowski do bazy lotniczej Hmejmim/Latakia (Syria) na noworoczne występy dla rosyjskich żołnierzy rozbija się niedaleko Soczi/Krym ok. 5.30 (czasu lokalnego/ 3.30 polskiego). Nikt nie ocalał. Giną m.in. żołnierze propagandowego oddziału Armii Czerwonej znanego pod nazwą Chór Aleksandrowa. Odział leciał zapewne wesprzeć morale (nadwątlone z całą pewnością mordowaniem kobiet i dzieci--można by sądzić po tym co piszą/nadają postępowe media na całym świecie, i nie tylko postępowe w tym wypadku BTW) rosyjskich lotników, więc chyba dobrze że nie doleciał? Niskie morale--więcej kobiet, dzieci i szpitali dziecięcych ocaleje...

#2: po serii porażek (Brexit, Trump itp.) postępacy znaleźli sobie nowego czarnego luda i nowe tłumaczenie (aka teoria spiskowa) czemu od pewnego czasu biorą spektakularnie/regularnie w djupę: niezwykle skuteczną ruską propagandę (#RuskiTroll, dawniej #CzarnaWołga). Powtórzę: skoro niezwykle niebezpieczni, bo skuteczni funkcjonariusze tej propagandy polegli, no to chyba dobrze. Oczywiście jak ginie człowiek itp, no ale na wojnie żołnierze giną--taka jest logika wojny: my albo oni, więc lepiej, że oni a nie my...

#konkluzja: nie zaraz, wielka strata dla kultury, ojej jaka tragedia. Nie-po-we-to-wana.

PS: i jeszcze kuriozalna ale i charakterystyczna dla tej grupy ludzi dyskusja po oświadczeniu p. Chabika, w tym tzw. miażdżący argument gimbazy: czy po Einsteinie też nie należało płakać, bo pracując przy bombie A był złym człowiekiem (sic!). Ach ci IYI (Intelectual Yet Idiot), może i był, ale pracował dla nas, a nie dla 3-ciej Rzeszy idioto.

url | Tue, 27/12/2016 06:24 | tagi: , , , ,
Porównanie frekwencji/głosów nieważnych w wyborach 2014/15

Rozkład frekwencji i odsetka głosów nieważnych (odpowiednio pierwsza i druga kolumna) w wyborach: do Sejmu 2015, do Parlamentu Europejskiego 2014 oraz słynnych wyborach do Sejmików Wojewódzkich 2014 (trzeci wiersz)

Wydaje mi się że baza protokołów z wyborów samorządowych jest niekompletna, w szczególności protokołów z wyborów do Sejmików Wojewódzkich (SW) powinno chyba być tyle ile jest obwodów czyli 27435, a jest 26495 (96,57%). Nie wiem czemu jest mniej, ale na przykład w Szczecinie przy części komisji obwodowych faktycznie nie ma protokołów z głosowania do SW.

Dane z wyborów samorządowych 2014 (na razie dotyczące tylko frekwencji) pobrane ze strony http://wybory2014.pkw.gov.pl/pl są dostępne tutaj. W poprzednich wpisach dotyczących wyborów podano odnośniki do danych z innych głosowań.

url | Fri, 13/05/2016 20:55 | tagi: , ,
Wybory do PE2014/Sejmu2015: komisje obwodowe z wysokim odsetkiem głosów nieważnych

W nawiązaniu do poprzedniego wpisu.

861 komisji obwodowych z ze znaczącym odsetkiem głosów nieważnych (przyjąłem 6% jako wartość progową):


duże mapy/dane

Na pierwszy ogląd, to nie wydaje się żeby w jakimś regionie mieszkali szczególnie niekumaci wyborcy, chociaż Dolny Śląsk/Podlaskie wydają się prezentować najkorzystniej:-)

url | Thu, 21/04/2016 17:17 | tagi: , ,
Web scrapping protokołów z wyborów do Parlamentu Europejskiego w 2014 r.

Rozkład komisji wg. liczby głosów

Frekwencja

Głosy nieważne

Ze strony pe2014.pkw.gov.pl ściągnąłem szczegółowe wyniki wyborów do parlamentu europejskiego z 2014 r. Pobrałem protokoły ze wszystkich 27664 komisji obwodowych. Takie protokoły są dostępne pod adresem:

http://pe2014.pkw.gov.pl/pl/wyniki/protokoly/<idGminy><idOkręgu>

Rozkład komisji obwodowych według liczby oddanych głosów:

komisje <- read.csv("komisje-frekwencja.csv", sep = ';',  header=T, na.string="NA");
str(komisje);

fivenum(komisje$lkw);

hist(komisje$lkw, breaks=seq(0, 1250, by=10),
       freq=TRUE,col="orange",main="Wybory2014: komisje wg liczby oddanych głosów ważnych",
       xlab="# głosów",ylab="# komisji (N = 27664)",yaxs="i",xaxs="i")

Zależność pomiędzy frekwencją w wyborach do PE a frekwencją w wyborach do Sejmu 2015:

require(ggplot2)

d <- read.csv("komisje-frekwencja14_15.csv", sep = ';',  header=T, na.string="NA");
# Usuń zagraniczne (jako nietypowe):
d <- subset (d, ( teryt != 149901 ));

ggplot(d, aes(x = freq)) +
  geom_point(aes(y = freq15), colour = 'blue') +
  xlab(label="freq 2014") +
  ylab(label="freq 2015")

## tylko obwody z liczbą głosów > 20 oraz
## frekwencją większą od 60  
d <- subset (d, ( lkw > 20 & lkw15 > 20 & freq > 60 & freq15 > 60))
str(d)
'data.frame':   76 obs. of  19 variables:

Komisji z nietypowo dużą frekwencją (arbitralnie przyjąłem 60%), w których głosowało co najmniej 21 wyborców (też arbitralnie) było 76 (0,2% wszystkich komisji). Okazało się, że praktycznie wszystkie te komisje są zlokalizowane w obwodach ,,specjalnych'' (szpitale, domy pomocy społecznej, areszty itp...)

Zależność pomiędzy odsetkiem głosów nieważnych w wyborach do PE a frekwencją w wyborach do Sejmu 2015:

 ggplot(d, aes(x = pgnw)) +
  geom_point(aes(y = pgnw15), colour = 'blue') +
  xlab(label="nonvalid 2014 (%)") +
  ylab(label="nonvalid 2015 (%)") 

Zwraca uwagę pewna liczba komisji o bardzo dużej liczbie głosów nieważnych:

d <- read.csv("komisje-frekwencja14_15.csv", sep = ';',  header=T, na.string="NA");
# Usuń zagraniczne (nietypowe):
d <- subset (d, ( teryt != 149901 ));

# Usuń krajowe nietypowe tj.areszty/domy pomocy itp:
d <- subset (d, !grepl("Dom pomocy|Domu Pomocy|Areszt|Zakład karny", adres, ignore.case = TRUE));

# Tylko komisje gdzie odsetek gł. nieważnych > 6%
d <- subset (d, ( pgnw > 6 & pgnw15 > 6 ));

str(d);
'data.frame':   861 obs. of  19 variables:

Komisji z ze znacznym odsetkiem głosów nieważnych (przyjąłem 6% jako wartość progową) było zatem 861 (3%). Trzy procent to nie jest aż tak mało, więc warto by się przyjrzeć im bliżej, ale to nie teraz.

Dane pobrane ze strony http://pe2014.pkw.gov.pl/pl/ są dostępne tutaj. Natomiast tutaj znajdują się pobrane ze strony PKW protokoły wyborcze: 1) z wyborów do parlamentu europejskiego 2014r. 2) z wyborów prezydenckich 2015r. 3) z wyborów parlamentarnych 2015r. oraz 4) z wyborów samorządowych 2014r.

Wszelkie komentarze/uwagi/poprawki mile widziane:-)

url | Wed, 20/04/2016 21:36 | tagi: , ,
Protokoły wyborcze do pobrania

Jak ktoś jest zainteresowany, to pobrane ze strony PKW protokoły wyborcze, są dostępne tutaj. Na razie są protokoły z wyborów parlamentarnych 2015 r. oraz (słynnych) wyborów samorządowych 2014 r. -- odpowiednio 224 i 553 Mb (po spakowaniu).

url | Mon, 30/11/2015 09:04 | tagi: , , ,
Rozkład komisji obwodowych według liczby oddanych głosów

Rozkład komisji obwodowych według liczby oddanych głosów (na podstawie szczegółowych wyników wyborów do Sejmu RP, pobranych ze strony PKW -- por. Web scrapping protokołów wyborczych ze strony PKW):

komisje <- read.csv("komisje_glosy_razem.csv", sep = ';',  header=T, na.string="NA");
str(komisje);

hist(komisje$glosy, breaks=seq(0, 3200, by=25), col="orange",
     freq=TRUE,main="Komisje wg liczby oddanych głosów",
     xlab="# głosów",ylab="# komisji (N = 27859)" )

mtext(text="https://github.com/hrpunio/Data/tree/master/sejm", 4, cex=0.7)
text(3200,100, "Me = 495\nQ1 = 265\nQ3 = 782...", 2, cex=0.7,  adj=c(0,0));

fivenum(komisje$glosy);

quantile(komisje$glosy, c(.10));
quantile(komisje$glosy, c(.05));
quantile(komisje$glosy, c(.90));

url | Sat, 21/11/2015 19:23 | tagi: , , , ,
Wiek posłów ósmej kadencji Sejmu RP


Na stronie www.sejm.gov.pl już dziś pojawiły się strony o nowowybranych posłach 8 kadencji. Strony można ściągnąć na przykład takim oto prostym skryptem basha:

#!/bin/bash
# Przykładowy URL: http://www.sejm.gov.pl/Sejm8.nsf/posel.xsp?id=002&type=A
padtowidth=3
for ((i=1;i<=460;i++)) ; do
  ## parametr id w URLu ma wartość 001--460
  ## za pomocą printf/tricku z padtowidth dodajemy wiodące zera:
  POSEL=`printf "%0*d\n" $padtowidth $i`
  wget 'http://www.sejm.gov.pl/Sejm8.nsf/posel.xsp?id='$POSEL'&type=A'\
     -O $POSEL.html
done

Na stronach na razie jest niewiele informacji, ale jest data urodzenia, liczba zdobytych głosów oraz okręg wyborczy z którego poseł został wybrany. Za pomocą prostych skryptów Perla można wydłubać te dane, dodać informacje o wieku/płci i zapisać w pliku CSV:

imnz;rokur;wiek;klub;miejsce;okreg;glosy;plec
Adam Abramowicz;1961-03-10;54;PiS;NA;7 Chełm;10500;M
Andrzej Adamczyk;1959-01-04;56;PiS;NA;13 Kraków;18514;M
...

Jak wygląda struktura wiekowa w poszczególnych klubach? (na poniższym wydruku symbole x.1, x.2, x.3, x.4 oraz x.5, to odpowiednio: wartość minimalna, pierwszy kwartyl, mediana, trzeci kwartyl oraz wartość maksymalna)

p <- read.csv("Sejm_8_u.csv", sep = ';',  header=T, na.string="NA");
boxplot (wiek ~ klub, p, xlab="Klub", ylab="Wiek", col='yellow')

aggregate (p$wiek, list(Klub = p$klub), fivenum)
aggregate (p$wiek, list(Klub = p$klub), na.rm=TRUE, mean)

A jak wyglądała średnia wieku w poszczególnych kadencjach Sejmu?

p <- read.csv("Sejm1-8.csv", sep = ';',  header=T, na.string="NA");
boxplot (wiek ~ kadencja, p, xlab = "Kadencja", ylab = "Wiek", col='yellow')

aggregate (p$wiek, list(Kadencja = p$kadencja), fivenum)

 Kadencja  x.1  x.2  x.3  x.4  x.5
1     1991 22.0 37.0 43.0 49.0 70.0
2     1993 24.0 39.0 45.0 50.0 74.0
3     1997 23.0 40.5 46.0 51.0 72.0
4     2001 26.0 43.0 49.0 54.0 78.0
5     2005 23.0 41.0 47.0 53.0 67.0
6     2007 22.0 41.0 48.0 54.0 78.0
7     2011 22.0 42.0 50.0 56.0 73.0
8     2015 23.0 41.5 51.0 59.0 77.0

aggregate (p$wiek, list(Kadencja = p$kadencja), na.rm=TRUE, mean)

  Kadencja        x
1     1991 43.19438
2     1993 45.21535
3     1997 46.42500
4     2001 48.28221
5     2005 46.55230
6     2007 47.32948
7     2011 48.86739
8     2015 49.74783

Dane pobrane ze strony http://www.sejm.gov.pl/Sejm8.nsf/poslowie.xsp?type=A są dostępne tutaj.

url | Thu, 12/11/2015 23:36 | tagi: , , , ,
Web scrapping protokołów wyborczych ze strony PKW

Ze strony PKW ściągnąłem szczegółowe wyniki wyborów do Sejmu RP. Szczegółowe w tym sensie, że pobrałem protokoły ze wszystkich 27859 komisji obwodowych. Takie protokoły są dostępne pod adresem:

http://parlament2015.pkw.gov.pl/321_protokol_komisji_obwodowej/IdKomisji

Identyfikatory obwodowych komisji da się pobrać ze strony PKW metodą ,,kolejnych przybliżeń'': najpierw okręgi, potem powiaty, potem gminy a na końcu w każdej gminie lista komisji obwodowych. Ponieważ otrzymałem tyle komisji obwodowych ile podaje PKW (por. tutaj), to zakładam że niczego nie pogubiłem.

Sprawdzenie danych zaczynamy od podsumowanie liczby głosów ważnych, które zostały oddane na kandydatów z każdego komitetu:

Komitet L.kandydatów L.głosów L.głosów* Różnica Okr19 Okr19* Różnica
KORWIN 899 722921 722999 78 21757 21767 10
KUKIZ 839 1338610 1339094 484 26546 26573 27
Kongres N. Prawicy 116 4852 4852 0 x x x
Razem 571 550343 550349 6 9469 9475 6
Samoobrona 119 4266 4266 0 x x x
BRAUN 202 13113 13113 0 x x x
JOW Bezpartyjni 138 15184 15656 472 x x x
Mniejszość Niemiecka 24 27530 27530 0 x x x
Obywatele do Parlamentu 40 1964 1964 0 266 266 0
Ruch Społeczny RP 59 3941 3941 0 186 186 0
STONOGA 299 42668 42731 63 x x x
Zjed. dla Śląska 42 18668 18668 0 x x x
PETRU 858 1155364 1155370 6 15942 15948 6
PiS 918 5711661 5711687 26 58317 58343 26
PO 914 3661455 3661474 19 32240 32259 19
PSL 916 779874 779875 1 796 797 1
ZLEW 905 1146837 1147102 265 7948 7956 8
* dane zagregowane ze strony PKW

Jak widać są rozbieżności (kolumny 3--5).

Po podliczeniu głosów w każdym obwodzie osobno okazuje się, że źródłem problemów jest m.in. okręg #19, w którym liczone są głosy za granicą (kolumna 6--8 w tabeli powyżej). W szczególności brak jest protokołu z komisji 97770 (baza Bagram/Afganistan, por. POLSKA-OKRĘGI-OKRĘG NR: 19-Zagranica-Zagranica) co być może wynika z konieczności zachowania tajemnicy wojskowej. Zakładając, że w Bagram PiS/PO/PSL/Petru/Razem dostały odpowiednio 26/19/1/6/6 głosów, to w przypadku 12 z 17 komitetów wynik się zgadza (problem stanowią KUKIZ, ZLEW, KORWIN, Bezpartyjni i Stonoga).

Drążąc temat wyliczyłem liczbę głosów dla komitetu JOW Bezpartyjni, który zarejestrował listy w 8 okręgach wyborczych:

Nr okręgu L.głosów L.głosów* Różnica
02 2068 2540 472
18 1045 1045 0
21 1772 1772 0
22 2289 2289 0
33 2344 2344 0
34 1426 1426 0
36 1973 1973 0
39 2267 2267 0
* dane zagregowane ze strony PKW

Zatem całe manko jest w okręgu #02. PKW podaje też stosowne dane w rozbiciu na powiaty (por. tutaj). Przykładowo dla powiatu ząbkowickiego (kod teryt 0224) JOW Bezpartyjni mieli otrzymać 237 głosów. W skład tego powiatu wchodzi 7 gmin, m.in. gmina Bardo (teryt 022401), w której to gminie JOW Bezpartyjni miał otrzymać 14 głosów (por. tutaj). Na terenie gminy Bardo działały 4 obwodowe komisje wyborcze (por. tutaj). W komisji #1 (Centrum Kultury i Promocji Bardo, ul. Kolejowa 12, 57-256 Bardo) na komitet JOW Bezpartyjni oddano 3 głosy. PKW udostępnia też szczegółowy protokół z tejże komisji (por. tutaj) -- wystarczy kliknąć w adres na stronie POLSKA-OKRĘGI-OKRĘG NR: 2-ząbkowicki-Bardo dla wyników komitetu JOW Bezpartyjni. No i na tym protokole każdy z kandydatów JOW Bezpartyjni ma w rubryce Liczba oddanych głosów 0 głosów.

Podsumowując powyższy dłuższy wywód: według protokołu JOW Bezpartyjni zdobył w tym obwodzie 0 głosów, ale według informacji zbiorczej na innej stronie 3 głosy.

Zatem się wyjaśniło że sumując informacje z protokołów komisji nie ma szans na otrzymanie poprawnego wyniku (ale to co mam jest wynikiem prawie dokładym--błąd jest niewielki). Pozostaje tajemnicą PKW dlaczego ich system działa tak pokracznie.

Dane pobrane ze strony http://parlament2015.pkw.gov.pl/ są dostępne tutaj. Pliki komisja_84873_protokol-0.png--komisja_84873_protokol-4.png to zrzuty ekranu ilustrujące ,,przypadek JOW Bezpartyjni w gminie Bardo'' opisany wyżej.

Wszelkie komentarze/uwagi/poprawki mile widziane:-)

url | Fri, 06/11/2015 18:35 | tagi: , , ,
Komisje z rekordowym poparciem wg komitetów

Komisje z rekordowym poparciem wg komitetów w wyborach do Sejmu (2015). Generalnie to są specyficzne komisje i/lub takie komisje, w których frekwencja była bardzo mała. Poniżej po jednym przykładzie dla 8 wybranych komitetów:

Komitet %głosów ważnych Ogółem*Adres Id komisji
KORWIN 50,0 14 Stowarzyszenie MONAR Ośrodek Leczenia... 102943
KUKIZ 82,86 35 DPS w Osinach 106282
KW Razem 40,00 5 NZO Dom Sue Ryder Bydgoszcz 86967
KWW Zbigniewa Stonogi 36,93 417 Świetlica Wiejska w Lubieszewie 102231
PETRU 50,00 2 Zespół Zakładów Opieki Zdrowotnej w Nowogrodźcu 83629
PO 100,00 1 Zakład Opieki Zdrowotnej Świnoujście 111436
PSL 100,00 1 Lokal Szpitala Pomocy Maltańskiej Oddział w Barczewie 107560
PiS 100,00 57 DPS w Kurozwękach 106804
ZLEW 61,29 31 DPS w Nakle/Notecią 86194
* głosów ogółem na wszystkich kandydatów.

Pełna lista dla 25 komisji z najwyższym poparcie dla każdego komitetu jest tutaj albo tutaj.

url | Fri, 06/11/2015 11:39 | tagi: , , ,
Semper Fidelis

Poparcie dla trzech najpopularniejszych partii politycznych w komisjach zorganizowanych w zakładach karnych i aresztach śledczych (181 komisji). Procent głosów ważnych:

Województwo PO Kukiz PiS L. głosów
pomorskie 62.3 11.5 9.3 2175
dolnośląskie 55.6 13.2 10.9 2891
mazowieckie 55.5 13.1 9.5 3235
warmińsko-mazurskie 55.4 13.4 11.6 1550
lubuskie 54.4 12.5 10.7 894
śląskie 54.4 17.6 8.6 2869
zachodniopomorskie 54.2 13.2 10.9 1943
wielkopolskie 53.8 12.8 11.8 1790
kujawsko-pomorskie 51.4 13.8 11.3 1734
łódzkie 50.3 17.0 10.7 1522
opolskie 48.9 18.1 12.6 1492
małopolskie 47.2 18.2 14.0 1522
lubelskie 43.4 21.1 13.6 1364
podlaskie 45.9 19.3 12.3 826
świętokrzyskie 41.9 22.3 14.5 523
podkarpackie 40.1 18.8 15.6 959
POLSKA 52.5 15.3 11.2 27289

Na podstawie danych pobranych ze strony http://parlament2015.pkw.gov.pl/ metodą webscrappingu. Dane są dostępne tutaj.

url | Mon, 02/11/2015 18:16 | tagi: , , ,
Wizjoner czy prowizjoner?

O zmarłych dobrze albo wcale, więc ten tekst nie jest o niespodziewanie zmarłym ,,najbogatszym-Polaku'' dr. Kulczyku, tylko o mediach, masowo publikujących wspomnienia po nim...

W tychże wspomnieniach słowo wizjoner jest odmienianie przez wszystkie przypadki i zwykle poprzedzone przymiotnikiem wielki. Jak wizjoner, to musi być i wizja a tej próżno próżno szukać. Ktoś tam wymienia autostradę (cyt: Ta autostrada jest fajnym pomnikiem tego, co pozostawił dla nas. Był wizjonerem.) inny twierdzi że wizją był browar (kupiony od SkarbuPaństwa i sprzedany dawno temu).

Wielki wizjoner a tak niewiele zostawił?

url | Thu, 30/07/2015 13:15 | tagi: ,
Głupi i głupszy: występ w Berlinie
Komorowski i Stauffenberg

Człowiek z obrazka (ten po prawej) znowy błysnął -- tym razem w Berlinie:

"Czyn Clausa von Stauffenberga, który targnął się na życie samego Hitlera, to ważne ogniwo europejskiego ruchu oporu -- podobnie jak... powstanie warszawskie" -- stwierdził Bronisław Komorowski na wykładzie wygłoszonym w ostatnim tygodniu podczas pożegnalnej podróży do Niemiec.

Jego występ był nie do strawienie nawet dla życzliwych mu mediów, jeszcze w maju agitujących za "najlepszym prezydentem 25 lecia". Newsweek odnosząc się do cytatu z akapitu wyżej: "Przesadził? Raczej tak..." Polityka udaje, że zdarzenia nie było -- no cóż nawet prof. Władyka miałby kłopoty z interpretacją historii wg. Bredzisława. Jedynie GłosCadyka, idąc w zaparte, broni swojego człowieka roku 2014: wszyscy w Niemczech byli brunatni, więc należy docenić, że ktoś był mniej brunatny niż ktoś inny (B.T. Wieliński w tekście: Prezydent Komorowski jedzie do Berlina. Prawica grzmi, że uczci Stauffenberga -- wroga Polski).

Patrona broni też głupszy:

Brak szacunku dla takiej osoby jest brakiem szacunku dla Polaków, którzy w walce z Hitlerem zginęli...

Wszyscy się okazuje walczyli z Hitlerem--jakimś cyborgiem, co sam jeden podbił pół Europy. Nałęcz udając głupiego, i zamiast Niemcy mówiąc Hitler, posługuje się prostacką propagandową kalką: całe zło to Hitler, a reszta systemu, w tym Wehrmacht -- no cóż niewiele mogli, a niektórzy bohatersko walczyli...

Całe szczęście, że Szef i jego dwór odchodzą w niebyt już za 24 dni.

url | Mon, 13/07/2015 11:05 | tagi: , , ,
Aksjomat Balcerowicza: im większe wpływy związków zawodowych, tym mniej miejsc pracy

TU density vs GDP

TU density vs emp. rate

TU density vs unemp. rate

Kontunuując minianalizę rozpoczętą w poprzednim wpisie, a dotyczącą zależności pomiędzy zatrudnieniem a uzwiązkowieniem (w związku ze śmiałą tezą L. Balcerowicza, że taka zależność istnieje i jest ujemna):

require(ggplot2)

## https://stats.oecd.org/Index.aspx?DataSetCode=UN_DEN
## http://stats.oecd.org/Index.aspx?DatasetCode=STLABOUR
## employment rate Q42012
d <- read.csv("union_density_and_gdp.csv", sep = ';',  header=T, na.string="NA");

## tu.density = ratio of  wage and salary earners
## that are trade union members, divided by the total number of wage and salary earners:
## gdppc = GDP per capita
ggplot(d, aes(d$tu.density, d$gdppc)) + geom_point() +
  geom_text(aes(label=d$iso),size=2.0, vjust=-0.35)  +
  xlab("TU density (%)") + ylab("GDPpc (tys USD)") +
  scale_colour_discrete(name="") +
  geom_smooth(method="lm", se=T, size=2)

lm <- lm(data=d, gdppc ~ tu.density ); summary(lm);

## employment rate vs tu.density:
ggplot(d, aes(d$tu.density,d$emprate)) + geom_point() +
  geom_text(aes(label=d$iso),size=2.0, vjust=-0.35)  +
  xlab("TU density (%)") + ylab("Empolyment rate (%)") +
  scale_colour_discrete(name="") +
  geom_smooth(method="lm", se=T, size=2);

lm <- lm(data=d, emprate ~ tu.density ); summary(lm);

## youth unemployment rate vs tu.density:
## http://www.oecd-ilibrary.org/employment/youth-unemployment-rate_20752342-table2
ggplot(d, aes(d$tu.density,d$yur)) + geom_point() +
  geom_text(aes(label=d$iso),size=2.0, vjust=-0.35)  +
  xlab("TU density (%)") + ylab("Youth unempolyment rate (%)") +
  scale_colour_discrete(name="") +
  geom_smooth(method="lm", se=T, size=2);

lm <- lm(data=d, yur ~ tu.density ); summary(lm)

Prosta regresja daje następujące rezultaty: zależność #1 pomiędzy GDP per capita a Trade Union Density jest słabo dodatnia (to już wiemy); zależność #2 pomiędzy współczynnikiem zatrudnienia a Trade Union Density też jest słabo dodatnia; zależność #3 pomiędzy stopą bezrobocia w grupie wiekowej 15--24 lat a Trade Union Density jest wprawdzie ujemna, ale statystycznie nieistotna (współczynnik $R^2$ do tego równy 1,4%).

Jak to wygląda graficznie widać na wykresach obok.

Zbiór danych jest do pobrania tutaj.

BTW: do konwersji pliku PDF na JPG wykorzystano:

convert -density 150 Rplots.pdf Rplots_%02d.png

Uwaga na koniec: zapis method="lm" jest bardziej poprawny niż method=lm zastosowany w poprzednim wpisie.

url | Tue, 26/05/2015 18:20 | tagi: , , , ,
Im większe wpływy związków zawodowych, tym mniej miejsc pracy
TU density vs GDP (OECD countries)
TU density vs GDP

Pan profesor Balcerowicz na finiszu kampanii prezydenckiej baaardzo mocno się zaangażował po stronie rządzącego układu, a to zaangażowanie przejawia się m.in. wzmożonym wypisaniem na Twitterze różnych mniej lub bardziej mądrych (zwykle mniej) sloganów (aka farmazonów). Np. "S" już poparła Dudę, który zabiega o poparcie OPZZ -- to zła wiadomość dla młodych. Im większe wpływy ZZ w państwie, tym mniej miejsc pracy..

Co szkodzi sprawdzić empirycznie tezę profesora? Pobrałem zatem ze strony stats.oecd.org dane dotyczące Trade Union Density (ratio of wage and salary earners that are trade union members, divided by the total number of wage and salary earners tj. udział fundusza płac związkowców do płac ogółem). A ze strony List of OECD countries by GDP per capita dane dotyczące GDP per capita (jakoś nie mogłem szybko odszukać tych liczb na stronie stats.oecd.org -- zakładam, że na wikipedia.org przepisano je bez błędów:-) Dane są z roku 2012.

require(ggplot2)

## https://stats.oecd.org/Index.aspx?DataSetCode=UN_DEN
d <- read.csv("union_density_and_gdp.csv", sep = ';',  header=T, na.string="NA");

ggplot(d, aes(d$tu.density,d$gdppc)) + geom_point() +
  geom_text(aes(label=d$iso),size=2.0, vjust=-0.35) +
  xlab("TU density (%)") + ylab("GDPpc (tys USD)") +
  scale_colour_discrete(name="") +
  geom_smooth(method=lm,se=T, size=2)

lm <- lm(data=d, gdppc ~ tu.density ); summary(lm)

Jak widać na wykresie Polska jest piąta od końca wśród krajów OECD pod względem GDP na głowę i szósta od końca jeżeli chodzi o wielkość uzwiązkowienia. Czepianie się związków w tej sytuacji (12,5% uzwiązkowienia w PL, podczas gdy przykładowo w Niemczech jest to 41.9%, a w Danii 67.2%) ma wszystkie znamiona obsesji podobnej przykładowo do popularnego wśród Palikotowców i innych antyklerykałów poglądu, iż jakoby Kościół Katolicki jest praprzyczyną wszelkiego zła (przynajmniej w PL).

Dodatkowo prosta regresja daje następujący rezultat: GDP = 0,25 tu.density + 30,5435, czyli 1% wzrost uzwiązkowienia daje 0,25 tys wzrostu GDP na głowę (dokładnie odwrotnie niż twierdzi Balcerowicz). Współczynnik przy zmiennej tu.density jest nawet istotny statystycznie (na poziomie 0,05) ale $R^2$ jest faktycznie bardzo marne -- 13%.

Zbiór danych jest do pobrania tutaj.

url | Sun, 17/05/2015 14:52 | tagi: , , , ,
Faryzeuszowskie żale na Czerskiej

Głos Cadyka donosi: Austriacka gazeta wzywa Polskę, by przyznała się do udziału w Holocauście. I dalej: Czytam dzisiejsze wydanie austriackiego dziennika "Heute" i zastanawiam się, czy dziennikarstwo może upaść jeszcze niżej [...] Otóż red. Erich Nuler, który wybrał się na wtorkowe uroczystości 70. rocznicy wyzwolenia KL Auschwitz, napisał w korespondencji, że Bronisław Komorowski -- w przeciwieństwie do prezydenta i kanclerza Austrii, którzy mówili o udziale Austriaków w Holocauście -- o polskiej winie nie zająknął się nawet słowem. Jaka jest ta przemilczana polska odpowiedzialność za Holocaust?

Coż takiego oburza faryzeuszy z Czerskiej? To przecież ich postulaty. Kto jak nie GC rozpętał histerię pn. polska wina, promował czystych hochsztalerów w tym temacie typu ,,historyk'' Gross i jego beletrystyka oraz piał z zachwytu nad przeprosinami Kwaśniewskiego za zbrodnie niemieckiego Wehrmachtu (de jure -- za prawo i porządek na okupowanym obszarze odpowiada armia je zajmująca).

Inna sprawa, że faktycznie szczytem groteski jest uczenie Polaków przyzwoitości przez potomków Hitlera, Kaltenbrunnera, Globocnika czy Eberla (ten ostatni z Treblinki).

Urodzony w Wiedniu prof. Raul Hilberg (cf http://en.wikipedia.org/wiki/Raul_Hilberg) w swojej autobiografii The politics of memory: The journey of a Holocaust historian zauważa, że Austria [w roku 1992] nie jest najlepszym rynkiem dla moich książek a potem ironicznie: Najkrótsze Who's Who jakie widziałem to Austriackie wydanie z 1948 r. -- wypełnione [wyłącznie] narciarzami i śpiewakami operowymi...

url | Tue, 24/02/2015 09:48 | tagi: , ,
Afera madrycka: taka tam analiza wyjazdów posłów 7 kadencji

UWAGA: Ten tekst nie jest o polityce ale o [elementarnej] statystyce.

Media informowały, że posłowie PiS Adam Hofman, Mariusz A. Kamiński i Adam Rogacki wzięli na podróż do Madrytu na posiedzenie komisji Zgromadzenia Parlamentarnego Rady Europy po kilkanaście tysięcy złotych zaliczki, zgłaszając wyjazd samochodem; w rzeczywistości polecieli tanimi liniami lotniczymi. Ponieważ kontrola wydatków posłów jest iluzoryczna różnica pomiędzy kosztem podróży samochodem a samolotem [za dużo mniejsze pieniądze] miała stanowić dodatkowy przychód wyżej wymienionych. Według prokuratury, która wszczęła śledztwo, zachodzi podejrzenie popełnienia oszustwa.

Łapiąc wiatr w żagle [sprawa się upubliczniła tuż przed ostatnimi wyborami samorządowymi] koalicja rządząca w osobie Marszałka Sejmu RP Sikorskiego zarządziła audyt, którego efektem było udostępnienie m.in. dokumentu pn. Wyjazdy zagraniczne posłów VII kadencja (kopia jest tutaj).

Jak przystało na kraj, w którym od lat działa Ministerstwo cyfryzacji zestawienie jest w formacie PDF, zatem pierwszym ruchem była zamiana na coś przetwarzalnego. Wpisanie w google PDF+Excel+conversion skutkuje ogromną listą potencjalnych konwerterów. Bagatelizując skalę problemu spróbowałem dokonać konwersji narzędziami dostępnymi on-line, ale z marnym rezultatem (za duży dokument przykładowo; serwis za free jest tylko dla PDFów mniejszych niż 50 stron). W przypadku Convert PDF to EXCEL online & free coś tam skonwertował, nawet wyglądało toto na pierwszy rzut oka OK ale na drugi już nie: dokument niekompletny oraz nieprawidłowo zamienione niektóre liczby (przykładowo zamiast 837,50 zł w arkuszu jest 83750 -- 100 razy więcej!).

Ostatecznie skończyło się na ściągnięciu 30 dniowej wersji Adobe Acrobata Pro XI, który faktycznie sprawdził się w roli konwertera PDF→XLSX. Do konwersji wykorzystałem służbowego laptopa Elki wyposażonego w legalny Office 2010, na którym zainstalowałem ww. AA Pro XI. OOffice niby czyta XLSX, ale z koszmarnymi błędami, więc żeby dalej móc obrabiać arkusz w Linuksie wczytałem wynikowy XLSX do Excela 2010 po czym zapisałem go w (starszym) formacie XLS. Ten plik wyświetlił się w OO Calcu bez problemu.

Arkusz jest tak sformatowany, że 4 pierwsze komórki oraz są często wielowierszowe i scalone, zawierają bowiem liczbę porządkową, datę, miejsce i cel wyjazdu delegacji posłów. Po zamianie na plik CSV zawartość komórek scalonych pojawi się w pierwszym wierszu, a pozostałe będą puste. Prostym skryptem Perlowym mogę wypełnić puste komórki wg. algorytmu: jeżeli cztery pierwsze pola są puste, to skopiuj wartości ostatnich niepustych:

if ($tmp[0] eq '' && $tmp[1] eq '' && $tmp[2] eq '' && $tmp[3] eq '' ) { ... }

Pierwszy problem: wielowierszowe komórki z kolumn 1--4 nie zawsze są scalone. Czasem tekst jest podzielony na wiersze co psuje konwersję. Ręcznie scalam niescalone komórki (trochę to trwa). Przed scaleniem usuwam z kolumn 1--4 końce wiersza.

Drugi problem: część liczb nie jest liczbami z uwagi na użycie separatora tysięcy, który się zamienił w PDFie na odstęp (spację). Zatem zaznaczam kolumny zawierające różne pozycje kosztów po czym:

Edytuj→Znajdź i zamień
usuwam odstępy, tj. zamieniam spację na pusty napis
Format→Komórki
wybieram numer z dwoma miejscami po przecinku.

Po uporządkowaniu arkusza, zapisuję go w formacie CSV. Następnie prostym skryptem Perlowym zamieniam na taki plik CSV, w którym puste komórki są wypełniane zawartością z poprzednich wierszy. Kolumna Państwo - miasto jest kopiowana. Kopia jest zmieniana na jednoznaczne: Państwo, miasto (pierwszy-kraj, przecinek, pierwsze miasto z listy celów podróży -- żeby geokoderowi było łatwiej.)

Innym skryptem Perlowym dodaję do pliku CSV 3 kolumny, które zawierają:

  1. współrzędne celu podróży (w tym celu zamieniam adres Państwo, miasto na współrzędne geograficzne korzystając z geokodera Google);

  2. odległość w kilometrach pomiędzy punktem o współrzędnych 21.028075/52.225208 (W-wa, Wiejska 1) a celem podróży (obliczoną przy wykorzystaniu pakietu GIS::Distance);

  3. linię zdefiniowana w formacie KML o końcach 21.028075/52.225208--współrzędne-celu-podróży (do ewentualnego wykorzystania z Google Fusion Tables).

#!/usr/bin/perl
#
use Storable;
use Google::GeoCoder::Smart;
use GIS::Distance;

$geo = Google::GeoCoder::Smart->new();

my $gis = GIS::Distance->new();

my $GeoCodeCacheName = 'geocode.cache';
my $NewCoordinatesFetched=0; # global flag
my $SLEEP_TIME = 2 ;
my $coords_okr = "21.028075,52.225208"; # Warszawa = środek świata

my %GeoCodeCache = %{ retrieve("$GeoCodeCacheName") } if ( -f "$GeoCodeCacheName" ) ;
my ($wwa_lng, $wwa_lat) = split (",", $coords_okr);
my $linesNo = 0 ;
my $GCtotaluse = 1; # laczna liczba wywolan geocodera

while (<>) {
  $linesNo++;
  chomp();  $_ =~ s/[ \t]+;[ \t]+/;/g; ## usuń ew. niepotrzebne spacje

  @line = split ";", $_;  print STDERR "**$linesNo = $line[3] ... ";

  # geokodowanie (uwaga na limit) 
  # Poprawki dla miejsc, których nie zna Google:
  $line[3] =~ s/Erewań/Erywań/; ## 
  $line[3] =~ s/Sowayma/Madaba/; ## najbliższe miasto
  $line[3] =~ s/Bołszowce/Iwano-Frankiwsk/; ## najbliższe miasto

  my $coords = addr2coords( $line[3] );

  ($tmp_lat, $tmp_lng, $gcuse) = split " ", $coords;
  if ($gcuse > 0) {$GCtotaluse++ ; }

  $distance = $gis->distance($tmp_lat,$tmp_lng => $wwa_lat,$wwa_lng );
  $distance_t = sprintf ("%.1f", $distance);

  my $kml_line = "<LineString><coordinates>$tmp_lng,$tmp_lat $coords_okr</coordinates></LineString>";
  print "$_;\"$coords\";$distance_t;\"$kml_line\"\n";
  print STDERR "\n";

  if ($GCtotaluse % 100 == 0 ) {# store every 100 geocoder calls
    store(\%GeoCodeCache, "$GeoCodeCacheName");
    print STDERR "\n... Cache stored. ***\n";    
  }
}

##
store(\%GeoCodeCache, "$GeoCodeCacheName");

## ## ## ####
sub addr2coords {
 my $a = shift ;
 my $r = shift || 'n';
 my ($lat, $lng) ;
 my $GCuse = 0;

 ##consult cache first
 if (exists $GeoCodeCache{"$a"} ) {
   print STDERR "Coordinates catched ... $a ";
   ($lat,$lng) = split (" ", $GeoCodeCache{"$a"} );
 }
 else {
   print STDERR "Geocoding ... $a ";
   my ($resultnum, $error, @results, $returncontent) = $geo->geocode("address" => "$a");
   $GCuse = 1;
   sleep $SLEEP_TIME; ## make short pause

   $resultnum--; 
   $resultNo=$resultnum ;

   if (resultNo > 0) { print STDERR "** Location $a occured more than once! **" }
   if ($error eq 'OK') {
     $NewCoordinatesFetched=1;
     for $num(0 .. $resultnum) {
       $lat = $results[$num]{geometry}{location}{lat};
       $lng = $results[$num]{geometry}{location}{lng};
       ##print "*** LAT/LNG:$lat $lng ERROR: $error RES: $resultNo ***\n";
     }

     $GeoCodeCache{"$a"} = "$lat $lng"; ## store in cache

   } else { print STDERR "** Location $a not found! due to $error **"  }
 }


 if ($r eq 'r' ) { return "$lng,$lat,$GCuse"; } # w formacie KML
 else { return "$lat $lng $GCuse"; }
}

Gotowy plik CSV zawierający zestawienie podróży jest dostępny tutaj.

Na podstawie zestawienia i z użyciem pakietu ggplot2 generują się takie oto śliczne wykresy.

Wszystkie podróże z zestawienie (N=1874; odpowiednio: koszt łączny, koszt transportu, długość w tys km):

Tylko podróże dla których koszt transportu był niezerowy (N=1423; odpowiednio: koszt łączny, koszt transportu, długość w tys km):

Poniższy skrypt R sumuje i drukuje wszystkie podróże każdego posła:

require(plyr)

d <- read.csv("W7RR_podroze_by_podroz1.csv", sep = ';', dec = ",",  header=T, na.string="NA");

# Dodaj kolumnę której wartości to konkatenacja: "Poseł|Klub"
d[,"PosKlub"] <- do.call(paste, c(d[c("Posel", "Klub")], sep = "|"));

# Usuń wszystko za wyjątkiem tego co potrzeba:
d <- d[ c("PosKlub", "Klacznie", "Ktransp", "Dist") ];

# Sumowanie po PosKlub 
PSums <- as.data.frame ( ddply(d, .(PosKlub), numcolwise(sum)) );

# Z powrotem rozdziel kolumnę "Poseł|Klub" na dwie
PSums <- as.data.frame ( within(PSums, PosKlub <-data.frame( do.call('rbind', 
   strsplit(as.character(PosKlub), '|', fixed=TRUE))))  )

# Drukuj 
PSums;

Z pliku .Rout kopiuję zestawienie łącznych wydatków posłów oraz łącznej pokonanej przez nich odległości:

       PosKlub.X1 PosKlub.X2 KlacznieT  KtranspT    DistT
1 Adam Abramowicz        PiS   4.02599   2.64595   1.3153
2     Adam Hofman        PiS 119.55271  59.53315  26.1716
3   Adam Kępiński        SLD  10.15754   7.93882   3.8069
4   Adam Kępiński         TR  12.63098   8.02327   2.2107
...

Uwaga: kilkanaście nazwisk się powtarza ponieważ posłowie zmienili przynależność klubową w czasie trwania kadencji [Aby uwzględnić takich posłów sumowanie odbywało się po wartościach zmiennej zawierającej połączone napisy Poseł|Klub.]

Na podstawie takiego z kolei zestawienia i znowu z użyciem ggplot2 generują inne śliczne wykresy.

Uwaga: sumowane tylko podróże, dla których koszt transportu był niezerowy (N=1423; odpowiednio: koszt łączny, koszt transportu, długość w tys km):

Link do tabeli zawierającej zestawienie podróży w formacie Google Fusion Tables jest tutaj.

Dane + skrypty dostępne są także w: github.com/hrpunio/Data.

url | Tue, 09/12/2014 19:09 | tagi: , , , , , , ,
Przykra sprawa. Nie lekceważę jej

Polska została zaatakowana. Chodzi prawdopodobnie o zamach stanu [...]

Przykra sprawa. Nie lekceważę jej

Informacja prezesa Rady Ministrów w sprawie tzw. afery podsłuchowej z udziałem prezesa Narodowego Banku Polskiego, ministra spraw wewnętrznych oraz byłych wysokich urzędników państwowych.

[...]

Chciałbym bardzo wyraźnie podkreślić, że nie lekceważąc lekcji, jaka płynie z nagrań, lekcji, z której powinni wyciągnąć wnioski wszyscy bez wyjątku, zarówno nagrani, jak i ci obawiający się, że mogli być nagrani, lekcji, którą powinni odrobić wszyscy uczestnicy życia publicznego mający wystarczającą wyobraźnię, że jednak prawdziwym problemem politycznym jest fakt, że grupa przestępców -- z jakiego powodu, o tym za chwilę -- pozwoliła sobie na nielegalne nagrywanie i podsłuchiwanie, a następnie publikowanie materiałów, które doprowadzają do takiego wstrząsu, jakiego jesteśmy uczestnikami i świadkami.

Dlaczego uważam, że mamy do czynienia z kryzysem politycznym i z problemem o charakterze politycznym? Po pierwsze, dzisiaj znamy już kontekst i tło tych zdarzeń. Dzisiaj informacje po pierwszych zatrzymaniach wskazują jednoznacznie na to, że osoby podsłuchujące mogły kierować się tak czy inaczej złymi intencjami. Ponadto nie ulega wątpliwości, niezależnie od tego, kto ma jaki status społeczny, że nielegalne podsłuchiwanie bez wiedzy osoby podsłuchiwanej, nagrywanie i upublicznianie tego typu materiałów jest przestępstwem. To jest bezdyskusyjny fakt prawny. Po drugie, mamy do czynienia z ludźmi -- mówię o pierwszych zatrzymanych -- których intencje biznesowe lub polityczne dzisiaj wydają się dość oczywiste.

Chciałbym bardzo wyraźnie podkreślić, że w przyszłości tych wątków może pojawić się więcej. Dzisiaj nikt nie jest w stanie precyzyjnie zdefiniować, co bezpośrednio powodowało zleceniodawcami i wykonawcami tego procederu podsłuchowego. Jak wiemy z dat opublikowanych nagrań, proceder ten trwał co najmniej 1,5 roku, nie w jednym miejscu i dotyczył dziesiątków, a może setek ludzi. Wiemy, że tak czy inaczej zaangażowane w to lub kojarzone z podsłuchującymi i nagrywającymi osoby związane są także z interesami, o których państwo polskie miało swoje określone zdanie i wobec których także podejmowało określone działania.

Chciałbym podkreślić znaczenie tego tła. Przede wszystkim mówimy o osobach zaangażowanych w działalność gospodarczą ściśle związaną z energetyką. Sytuacja, z jaką mamy miejsce w ostatnich dniach, poprzedzona była dość zdecydowanymi działaniami służb państwowych wobec importerów i dystrybutorów węgla na dużą skalę. Zdajemy sobie sprawę, że ten wątek może być wątkiem pobocznym albo niewyłącznym, ale nie ulega wątpliwości, że jest on obecny w tej sprawie.

Chciałbym mocno podkreślić, że dotychczasowa wiedza o zagrożeniu interesów państwa czy jego stabilności w związku z aferą podsłuchową każe szczególnie mocno i wnikliwie badać także związki osób bezpośrednio zaangażowanych w ten proceder z przedsięwzięciami gospodarczymi i ze środowiskami, które były aktywne, także jeśli chodzi o problematykę gazową. To w tej chwili nie jest już nawet tajemnicą publiczną. Nie jestem upoważniony do epatowania informacjami, które mogą być w dyspozycji premiera, ale nie ulega wątpliwości, że ten kontekst musi budzić najwyższe zaniepokojenie.

Skala zdarzeń, z jaką mamy do czynienia -- mówię o skali procederu podsłuchiwania i nagrywania -- jest, jak sądzę, adekwatna do skali interesów. Nie mówię tutaj tylko o interesach polskich firm, dwuznacznych lub nielegalnych, jakimi służby państwowe jakiś czas temu się zajęły. To tło jest szerokie, bo dotyczy kilku zdarzeń, które państwo mieli także okazję obserwować w ostatnich kilku czy kilkunastu miesiącach. Są one związane bezpośrednio lub pośrednio z aktorami tego przedstawienia, tego dramatu, z jakim mamy do czynienia w ostatnich kilku dniach. Mają związek z osobami, które działały w dziedzinie połączeń gazowych między Polską a Rosją. Każdy na tej sali, kto interesował się problemem tzw. pieremyczki, czyli połączenia gazowego, które miało omijać Ukrainę, pamięta także zdarzania, z którymi związane są niektóre osoby pojawiające się w kontekście afery podsłuchowej. W tle jest handel węglem zza wschodniej granicy na wielką skalę. Rozpoczęliśmy bardzo energiczne działania w związku z sytuacją także w polskich kopalniach, m.in. na wniosek związkowców. Nie ma żadnego powodu, żeby twierdzić, że jest bezpośredni związek między tymi działaniami a akcją podsłuchową i ujawnianiem podsłuchów, ale nie ma też żadnego powodu, aby nie dostrzegać związku między jednym a drugim zdarzeniem. Mam nadzieję, że postępowanie, śledztwo, a następnie proces rozwieją wątpliwości, potwierdzą lub odrzucą te skojarzenia, które dzisiaj wydają się jednak dość oczywiste. W tle jest także sytuacja na Ukrainie i sytuacja w Europie.

Chcę mocno to podkreślić, dzisiaj mogę precyzyjnie zdefiniować poważne, fundamentalne interesy państwa polskiego, które mogą być zagrożone lub osłabione w związku z aferą podsłuchową, z czego nie musi wynikać bezpośredni związek afery podsłuchowej lub samego faktu jej ujawnienia w tych dniach z naruszeniem czy osłabieniem tych interesów. Zadaniem Wysokiej Izby, o tym też jestem przekonany, jest ocena skutków, wyreżyserowanych, zaplanowanych, zgodnych z intencjami sprawców tej afery albo będących rykoszetami. Te skutki są jednak bezdyskusyjne. Te skutki to osłabienie możliwości wpływania ze strony polskiego rządu na nową konstrukcję, nową architekturę personalną i instytucjonalną w Europie. Mówiąc ludzkim językiem, za dwa dni przystąpimy do pierwszych bardzo ważnych decyzji w Brukseli i będziemy decydować o dwóch kwestiach: kto będzie rządził instytucjami w Europie -- i chcę powiedzieć, że Polska nie była, moim zdaniem nadal nie jest, ale z całą pewnością nie była bez szans na bycie obecną przy tych najważniejszych rozdaniach -- i tego samego dnia będziemy także dyskutowali o unii energetycznej i o mechanizmach bezpieczeństwa energetycznego Europy w kontekście kryzysu ukraińskiego i konfliktu rosyjsko-ukraińskiego. Dobrze wszyscy państwo orientujecie się, że co do roli polskiego rządu i całego państwa polskiego w kontekście bezpieczeństwa energetycznego, rekomendacji Komisji Europejskiej, które zostały przygotowane na to najbliższe posiedzenie, sporu o to, na ile Europa ma być niezależna od wschodniego gazu, w całym tym procesie Polska, polski rząd i polskie państwo, odgrywała naprawdę kluczową rolę. Jeśli chodzi o ten element, który najbardziej bezpośrednio rzuca się w oczy po pierwszych dniach ustaleń, czyli handel węglem, sprawa jest na dużą skalę. Mówimy o bardzo poważnych pieniądzach, ale przede wszystkim mówimy o bardzo realnym wpływie obrotu węglem i tego, jaki jest to węgiel i skąd jest ten węgiel, na całą strukturę i bezpieczeństwo polskiej energetyki. To nie jest tylko mój wniosek.

[...]

Na podstawie Sprawozdanie Stenograficzne z 70. posiedzenia Sejmu Rzeczypospolitej Polskiej w dniu 25 czerwca 2014 r. (podkreślenia moje).

Jak dla mnie to tekst zawiera niespodziewanie dużo zaimków wskazujących: ten, tamten, jakiś, to, tamto, owamto...

url | Sun, 29/06/2014 12:41 | tagi: , , , ,
Syndrom Żorża Poniemirskiego

Mój ulubiony minister w rządzie RP dicit:

Kurcze z tym BOR-em. Ach. Kłopot polega na czymś innym. Nie polega na bieżącym zarządzaniu, ale chodzi o instytucję, której się nikt nie dotykał przez lata. Wszyscy, którzy pracują z BOR-em, mają syndrom sztokholmski Niech to zostanie między nami, ale odebrałem 15 telefonów od wszystkich możliwych najważniejszych ludzi w tym kraju, żebym, broń Boże, nie robił żadnej krzywdy BOR-owcom, więc mam wykręcone ręce. I zbieram za ewidentne wpadki formacji. Nikt się nie interesował, jak wygląda szkolenie, jak są finansowani, bo syndrom sztokholmski zapewnia bierność i symbiozę, gdzie fakty się nie liczyły. Gdybym był ministrem spraw wewnętrznych na początku czteroletnich rządów, toby to wyglądało inaczej, ale ja nie bardzo mogę sobie pozwolić na głębokie reformy w służbie, od której dyskrecji zależy wiele, he, he, istotnych decyzji w tym kraju na kwartał przed wyborami, bo to jest samobójstwo, he, he...

Ewidentny syndrom hr. Żorża Poniemirskiego, tego cierpiącego na głowę brata Niny Poniemirskiej, który w finałowej scenie okazuje się być najlepiej zorientowany wśród zebranych:

url | Fri, 20/06/2014 16:54 | tagi: , , , ,