Potrefené husy a školácké chyby na Mikroblogy.cz

Drobné kritické rýpnutí v postu Školácká chyba na Mikroblogy.cz pro Facebook vyvolalo rozsáhlou diskusi o domnělých motivech, názorech či komplexech kritika. Jan Řežab nejprve zaútočil a teprve po několika minutách se za chybu omluvil.

Bohužel se ale nechal tahat programátorem za fusekli a včera pozdě večer poněkud předčasně napsal, že programátor chybu „dnes odpoledne opravil a posílá své pozdravy“. Chyba opravena stále není a dokonce roste, ze 101 součet vyrostl na 102 procenta.

102 procent

Neopravená chyba je nejen ve verzi grafu pro Facebook, ale i na home page Mikroblogy.cz. Zároveň si ale kladu otázku, kam se v grafu pro Facebook poděli ti, kteří v hlasování zvolili volbu Nevím nebo Možná?

102 procent na home page

Jan Řežáb, „specialista na mobilní řešení a provozovatel několika světových portálů o mobilních řešení“, by potřeboval zřejmě lekci nejen z netikety…

Jan Řežáb
Jan Řežáb (neregistrovaný) 84.42.129.---
3. 2. 2009 10:18 Nový

Grafy jsou jiné

Grafy jsou jiné, nesouvisí – jedna je anketa a výpočet z hlasujících neregistrovaných uživatelů na Mikroblogy.cz (přímo přes www.mikroblogy.cz) a jedna je pouze statistika z Facebooku (www.mikroblogy.cz/fb). Produktově - je to tam i napsáno - u jednoho je to STATITSIKA a u jedné ANKETA.

Je to nelogické, opravíme to – díky moc za připomínku.

Tomáš Jindříšek
Tomáš Jindříšek (neregistrovaný) 80.188.58.---
3. 2. 2009 11:03 Nový

Chybka to je

Chybka to je. Je to škoda, ale stane se. Asi stejné jako jednou psát v textu této glosy "Jan Řežab" a podruhé "Jan Řežáb". Druhá možnost je správně :)

Jay-Rôh
Jay-Rôh (neregistrovaný) 78.136.161.---
3. 2. 2009 13:30 Nový

a..?

[3] a..?

Programátor
Programátor (neregistrovaný) 78.99.93.---
3. 2. 2009 19:43 Nový

Rád bych Janka požádal

Rád bych Janka požádal, aby nám všem programátorům amatérům nabídl algoritmus, který pro libovolný počet (nebo řekněme do 10) možných odpovědí zajistí, aby při zobrazování statistik byl součet procentuálních výsledků jednotlivých možností roven 100%.

Mě žádný jednoduchý algoritmus nenapadá, resp. zejména mě nenapadá, jak současně zabránit tomu, aby se stalo, že například budou-li pro možnosti A, B, C a D hlasovat ze 7 hlasujících vždy dva (pro variantu D pak jen jeden), tak aby se nestalo, že bude graf ukazovat například:
Odpověď A: 2 hlasy (28%)
Odpověď B: 2 hlasy (29%)
Odpověď C: 2 hlasy (28%)
Odpověď D: 1 hlas (15%)

... obecně totiž vždycky dojde k tomu, že na určitém desetinném místě číslo "utínám", a pak musím buď průběžně číslo přibližovat k nějakému ze sousedních, abych průběžně vyvažoval zaokrouhlovací chybu, nebo mi na konci něco chybí či přebývá. A jak asi uznáte při pohledu na modelový příklad, rozpor v procentech u možností A B C vypadá diovně, stejně jako to, že při porovnání odpovědí A a D se zdá, že hlasy mají hodnotu 15 nebo taky jen 13 procent...

Janek
Janek (neregistrovaný) 86.49.14.---
3. 2. 2009 21:13 Nový

To Programátor

To Programátor: Je to docela jednoduché, používejte selský rozum a nehledejte algoritmus. Při malém počtu odpovědí neuvádějte, prosím, procenta. Nedává to totiž ani smysl, že?

Programátor
Programátor (neregistrovaný) 78.99.93.---
3. 2. 2009 21:31 Nový

A od jakého počtu se mají procenta uvádět?

A od jakého počtu se mají procenta uvádět? A jak to řešit poté?

Janek
Janek (neregistrovaný) 86.49.14.---
3. 2. 2009 22:21 Nový

To Programátor

To Programátor: Nevím, od jakého počtu se "mají", já bych je asi nepoužil pod stovku (synek říká, že pod padesát...). A k druhé otázce: zkuste alespoň navrhnout nějaké kritérium, kam s rozdílem?!

Programátor
Programátor (neregistrovaný) 78.99.93.---
3. 2. 2009 23:04 Nový

Proč bych měl já něco navrhovat?

Proč bych měl já něco navrhovat? Nejste to vy, kdo se vysmívá programátorům, že mají takovou primitivní chybu na svém webu? Nejste náhodou učitel IVT? Je-li to tak triviální, předveďte se.

Janek
Janek (neregistrovaný) 86.49.14.---
3. 2. 2009 23:19 Nový

To Programátor

To Programátor: Právě protože jsem učitel, tak se vás snažím přinutit k alespoň základní úvaze a nepíšu UTFG ;-)

BTW, chyba programátora/ů nebyla v absenci onoho algoritmu či chyby vyplývající ze zaokrouhlení.

Programátor
Programátor (neregistrovaný) 78.99.93.---
4. 2. 2009 6:10 Nový

Jo, tohle se dalo čekat

Jo, tohle se dalo čekat. Vykrucování, mlžení...

Janek
Janek (neregistrovaný) 86.49.14.---
4. 2. 2009 8:08 Nový

To Programátor

To Programátor: Vykrucování? Mlžení? Učivo základní školy, takže UTFG, synáčku...

Programátor
Programátor (neregistrovaný) 195.146.147.---
4. 2. 2009 9:21 Nový

Jak úžasný přístup..

Jak úžasný přístup...

Každopádně, ačkoliv se snažím, nedaří se mi naformulovat pro google dotaz tak, abych se k nějakému správnému postupu dostal. Proto ještě jednou - dejte odkaz, nebo citujte postup, nebo ho uveďte v pseudokódu, prosím.

Janek
Janek (neregistrovaný) 86.49.14.---
4. 2. 2009 10:01 Nový

To Programátor

To Programátor: Na hrubý pytel hrubá záplata ;-) Tip: zkuste učebnice jazyka Pascal.

Filip Jirsák
Filip Jirsák (neregistrovaný) 78.108.96.---
4. 2. 2009 10:27 Nový

Mějme anketu se třemi odpověďmi

Mějme anketu se třemi odpověďmi. Tvrdíte, že pro malé počty hlasujících nemá smysl procenta uvádět, tak já budu velkorysý a hlasujících bude 1000. Pro variantu A hlasovalo 333 lidí, pro B 333 a pro C 334. Jak má podle vás správně vypadat procentní vyjádření, aby součet dal 100 %? A pokud podle vás má programátor švindlovat a k C přidat jedno procento, jak mělo vypadat před posledním hlasujícím, kdy hlasovalo 999 lidí – vždy přesně třetina (333) pro každou variantu? V takovém případě budou jakékoli hodnoty vyjádřené zaokrouhlený desetinným číslem, které dají dohromady 100 %, chybné – z čísel 3 × 33 % každý správně pochopí, že počet hlasů pro všechny tři varianty je vyrovnaný. Jakmile někam to procento navíc přidáte, vyjde vám sice součet 100 %, ale vzájemné poměry budou špatně. A o vzájemné poměry jde především, ne o celkový součet…

Janek
Janek (neregistrovaný) 86.49.14.---
4. 2. 2009 11:08 Nový

Filipe, díky za příspěvek, takže si to shrňme:

Filipe, díky za příspěvek, takže si to shrňme:

1. V postu jsem kritizoval výsledný graf na Mikroblogy.cz, který z nepochopitelných důvodů v součtu dosáhl 101 a 102 %. Zde nešlo o chybu vzniklou ze zaokrouhlování, ale o evidentní chybu programátora, který použil mezivýsledky odjinud, nikoli zaokrouhlená procenta.

2. Programátor v [6] požadoval algoritmus řešení pro případ s malým počtem respondentů a požadovaným výstupem v celých procentech a SÁM si doplnil podmínku na součet 100 %. Moje rada pro tento případ byla jasná: nepoužívat v takovém případě procenta.

3. Algoritmy pro úpravu tabulek, aby součet procent "seděl", se běžně používají desítky let (to si pamatuji, ale možná už i stovky), obvykle ale v případě procent udávaných s jedním nebo dvěma desetinnými místy (někdy je použitý algoritmus zcela primitivní). Požadavek na součet 100 % je ale především "estetický".

4. A nyní se teprve dostávám k vašemu dotazu: neřešíme matematickou úlohu, ale grafický výstup pro uživatele a dáváme si určitá kritéria jeho kvality či validity. Tedy pokud chceme jednoduchý výstup v celých procentech a chceme-li současně součet 100 % (upozorňuji opět, že já na něm striktně netrvám), dostaneme se v určitých případech do úzkých. Zde máme na výběr z několika možností: výsledky upravíme jen v případech, kde nedojde ke zkreslení (například v případě, že nám jde především o vzájemné poměry). V případě, že zároveň nezveřejňujeme konkrétní počty a výstup je dynamický, přidání jednoho procenta k nejvyšší hodnotě nemůže být podle mne na škodu, protože zdůrazní nejčastější výsledek (i když jde třeba o jeden hlas z tisíce). Další možností je v takovém případě "zjemnit" měřitko a zobrazit desetinné místo.

Filip Jirsák
Filip Jirsák (neregistrovaný) 78.108.96.---
4. 2. 2009 11:55 Nový

Pro dvě možné odpovědi není problém zaokrouhlovací chybou dosáhnout

[17] Pro dvě možné odpovědi není problém zaokrouhlovací chybou dosáhnout součtu 101 %, to stále ještě mohla být chyba zaokrouhlování. Zjemnit měřítko nepomáhá – když zaokrouhluju na jednotky procent, logiky budu mít v součtu chybu v řádu jednotek procent. Když budu zaokrouhlovat na desetinu procenta, ta chyba bude opět v řádu desetiny procenta. Při skóre 333 : 333 : 333 není kam tu jedničku přidat, všechny tři varianty dostaly přesně stejný počet hlasů. Z neznalosti základních principů matematiky a zaokrouhlování bych tedy nepodezíral programátora, ale toho, kdo u zaokrouhlených hodnot vyžaduje součet 100 %.

Ten požadavek na součet 100 % nechápu. Když mi někdo napíše, že poměry jsou 35 : 72 : 123 nebo 7423 : 186 : 12407, nepředstavím si pod tím nic, a asi nejsem sám. Pokud mi totéž někdo vypíše pomocí procent, hned z toho vidím, v jakém jsou jednotlivé odpovědi přibližně poměru. Sčítat do stovky to nepotřebuju, stačí mi, že součet je přibližně sto.

S tím, že jde o chybu zaokrouhlování jste přišel vy – z dnešního obrázku je patrné, že nejde ani o zaokrouhlovací chybu při přepočtu z hlasů na procenta, ani o chybu v zaokrouhlování již jednou zaokrouhlených čísel. Pokud upozorňujete znova na součet 102 %, vede to čtenáře (zvlášť když četl minulý příspěvek) zase k chybě zaokrouhlování. Lepší by však bývalo bylo napsat, že jste se minule mýlil a chyba není v zaokrouhlování, ale jde o nějakou závažnější chybu.

Janek
Janek (neregistrovaný) 86.49.14.---
4. 2. 2009 12:28 Nový

"Pro dvě možné odpovědi není problém zaokrouhlovací chybou dosáhnout

[18] "Pro dvě možné odpovědi není problém zaokrouhlovací chybou dosáhnout součtu 101 %" - prosím o příklad, jak?

"Zjemnit měřítko nepomáhá" - takže použijte v mém "algoritmu" opět volbu, neopravovat nebo opět zjemnit ;-)

"Ten požadavek na součet 100 % nechápu." - zeptejte se Programátora, proč ho chtěl v našem případě řešit. Ale s tímto požadavkem jsem se opakovaně v mé programátorské praxi setkal a musel jsem ho řešit.

"že jde o chybu zaokrouhlování jste přišel vy" - napsal jsem "Poslední ukázkou je nezvládnutý graf na Mikroblogy.cz pro Facebook, kde programátor neumí zaokrouhlovat a nevadí mu výsledných celkových 101 %." a pokud použijeme běžné funkce pro zaokrouhlování, tak u součtu dvou zaokrouhlených výsledků v celých procentech nemůže dát součet NIKDY ani 101 a ani 102 procent. Navíc pokud byl poměr 11:0, tak mi žádné zaokrouhlení nedá 101%!

"Pokud upozorňujete znova na součet 102 %, vede to čtenáře (zvlášť když četl minulý příspěvek) zase k chybě zaokrouhlování. " - proboha, proč?

Tervi
Tervi (neregistrovaný) 94.112.129.---
4. 2. 2009 12:49 Nový

17) haha, no, me to treba vadi, protoze to bije do oci a trochu se

17) haha, no, me to treba vadi, protoze to bije do oci a trochu se ztraci vyznam 'per cent' a vypada to skolacky. algoritmy, ktere daji za vysledek vzdy 100% samozrejme existuji a lze jich vytvorit nekonecne mnoho:) pokud vysledky ankety zobrazujeme v procentech, bude to tak jako tak stejne hodnota orientacni a uprimne nedulezita, nejedna se o financni vypocet ci tak neco, kde bude lip vypadat soucet rovny 100%, i kdybych mel k jednomu ze 3 rovnych vysledku v percentualnim vyjadreni zakroutit krkem. reseni je mnoho a pokud nekoho nenapadaji, podeziral bych ho ze ztraty kreativity;)

Programátor
Programátor (neregistrovaný) 195.146.147.---
4. 2. 2009 12:51 Nový

Co je na mém příspěvku [6] hrubého, to netuším

Co je na mém příspěvku [6] hrubého, to netuším. Vidím hrubost v blogspotu (výsměch je forma hrubosti a doporučování, že by si měl kdosi zopakovat nejen Netiketu mi připadá jako forma výsměchu), ale já jsem Janka jen požádal, aby nám naznačil, jak by to dělal on. Nedozvěděl jsem se to, místo toho mi bylo doporučeno používat selský rozum, což implikuje, že ho nepoužívám, tedy opět argumentace "ad hominem" ("Jseš blbej, nepoužíváš selský rozum"). Zeptal jsem se znovu, upřesnil jsem dotaz, ale opět mi nebylo odpovězeno věcně.

Ale zřejmě má Janek nějaký jiný názor na to, jak by měly fungovat internetové diskuze -- místo tématu se zabývá osobami/osobnostmi, doporučuje jim školu nebo používání takového či onakého rozumu. Za zvláště úsměvné považuji doporučení (pro programátory) "nehledat algoritmus". To jako mají programátoři programovat bez algoritmů? Nebo jak tomu rozumět?

Procenta, jak vám naznačil Filip, jsou fajn k získání okamžitého přehledu; je velmi jednoduché pomocí procent zjistit, že určitá volba vyhovuje nadpoloviční většině, nebo čtvrtině, nebo sotva desetině, účastníků, a výhodou je - neříkám tím určitě nic objevného - že jak se mění velikost množiny, zůstávají hodnoty v procentech stále příjemně malé. Počítat, v jakém poměru vůči sobě jsou čísla
1 297 224
a
854 912
, to už tak snadné není, na první pohled pouze vidíte, že to druhé je menší, a pokud třetí volba má

442 315 hlasů,

tak není tak jednoduché poznat, zda ty dvě méně populární volby v součtu přebíjejí tu nejpopulárnější, či nikoliv, zatímco z 48%, 25% a 24% to zjistíte výrazně rychleji.

A jakmile se někdo rozhodne, že svým čtenářům / návštěvníkům zprostředkuje určité výsledky v pohodlnější, procentuální formě, narazí na problém, co dělat s tou výsečí, která při zaokrouhlování vzniká -- protože nenajde-li se Janek, pošklebující se součtu 102%, určitě se najde Jinek, pošklebující se součtu 99%.

Janek
Janek (neregistrovaný) 86.49.14.---
4. 2. 2009 12:59 Nový

To Programátor

To Programátor: 102 procentům se skutečně pošklebuji. To vyžaduje skutečně originální způsob zpracování dat.

Pokud chcete vytrhovat slova či části vět, a pak je vyvracet či zesměšňovat, prosím, je to vaše vizitka.

M jako Molitan
M jako Molitan (neregistrovaný) 81.201.48.---
4. 2. 2009 12:59 Nový

Janek ma evidentne prilis volneho

Janek ma evidentne prilis volneho casu.

M jako Molitan
M jako Molitan (neregistrovaný) 81.201.48.---
4. 2. 2009 13:01 Nový

Mimochodem - tohle NENI chyba programatora

Mimochodem - tohle NENI chyba programatora. Je to chyba testovani. Ale rozhodne ne programatora. Kazdy chape, ze programatori delaji (nekdy i trivialni) chyby. Tak to proste je. Nikdy se to nezmeni, nikdo s tim pomoci sebelepsi metodiky nic neudela. Je to chyba testeru, popripade produkce.

Programátor
Programátor (neregistrovaný) 195.146.147.---
4. 2. 2009 13:14 Nový

... a pořád neuvedl

... a pořád neuvedl, jak by se měl řešit problém s 33333... hlasy pro každou ze tří možností...

Janek
Janek (neregistrovaný) 86.49.14.---
4. 2. 2009 13:15 Nový

JE to primárně chyba

[24] JE to primárně chyba programátora.

Janek
Janek (neregistrovaný) 86.49.14.---
4. 2. 2009 13:17 Nový

Nemám

[23] Nemám, ale Programátor už je zřejmě bez práce.

Janek
Janek (neregistrovaný) 86.49.14.---
4. 2. 2009 13:19 Nový

Pokud máte problém se čtením rozsáhlejšího textu

[25] Pokud máte problém se čtením rozsáhlejšího textu, tak to už vám nepomohu.

Programátor
Programátor (neregistrovaný) 195.146.147.---
4. 2. 2009 14:57 Nový

*Algoritmy pro úpravu tabulek, aby součet procent "seděl"

*Algoritmy pro úpravu tabulek, aby součet procent "seděl", se běžně používají desítky let (to si pamatuji, ale možná už i stovky), obvykle ale v případě procent udávaných s jedním nebo dvěma desetinnými místy (někdy je použitý algoritmus zcela primitivní). Požadavek na součet 100 % je ale především "estetický"*

OK, Janku, tak prosím:

Počet hlasů: Procent:
333333 = 33.33%
333333 = 33.33%
333333 = 33.33%
Celkem: 99.99%

Prosím, OPRAV tuto jednoduchou tabulku tak, jak by ji, podle tebe, opravil libovolný z těch opravovacích algoritmů, aby esteticky seděl součet 100%.

Filip Jirsák
Filip Jirsák (neregistrovaný) 78.108.96.---
4. 2. 2009 15:48 Nový

-- Pro dvě možné odpovědi není problém zaokrouhlovací chybou

[19] -- Pro dvě možné odpovědi není problém zaokrouhlovací chybou dosáhnout součtu 101 %" - prosím o příklad, jak?

Kdykoli, kdy máte v obou údajích 5 desetin. Takže třeba 0,5 % a 99,5 %.

-- Ale s tímto požadavkem jsem se opakovaně v mé programátorské praxi setkal a musel jsem ho řešit.

A řešením je záměrně uvádět falešné údaje? Nebylo by lepší tomu, kdo to požaduje, vysvětlit základy zaokrouhlování?

-- pokud použijeme běžné funkce pro zaokrouhlování, tak u součtu dvou zaokrouhlených výsledků v celých procentech nemůže dát součet NIKDY ani 101 a ani 102 procent

Těch 101 tam radši nevidím…

-- "Pokud upozorňujete znova na součet 102 %, vede to čtenáře (zvlášť když četl minulý příspěvek) zase k chybě zaokrouhlování. " - proboha, proč?

Protože jedinou příčinou chyby, kterou jste nabídl, je zaokrouhlování?

[20, 29] jednoduchý algoritmus, který napadne snad každého, je nepočítat každou hodnotu jako podíl z celku, ale jako podíl ze zbývajících procent.

Na začátku mám 100 dílů. A=B=C=333333, takže A/(A+C+C) = 1/3, tj. po zaokrouhlení 33 %. Zbývá mi k rozdělení 67 dílů. Podíl je B/(B+C) = 2/3, 2/3 z 67 dílů je po zaokrouhlení 34, takže napíšu 34 procent. Zbývá 33 dílů, ty mám rozdělit na C/C = 1, tj. napíšu 33 %.

Ovšem jako každá úprava výsledků na má jednu „drobnou“ nevýhodu – pro stejné hodnoty hlasování dostanete různé hodnoty procent. Otázka je, k čemu mají prezentované výsledky sloužit – zda pro porovnání hodnot, nebo pro procvičení sčítání do stovky. Z toho důvodu bych se na sčítače vykašlal a nechal zobrazovat pouze zaokrouhlené hodnoty, bez nějakého „estetického“ falšování – ať se sčítači místo sčítání raději doučí něco o zaokrouhlování.

Janek
Janek (neregistrovaný) 86.49.14.---
4. 2. 2009 16:36 Nový

Filipe, dostal jste mne ;-)

Filipe, dostal jste mne ;-) Už stárnu..., ale v komentářích u původního blogpostu jsem tuhle chybu neudělal. Ale ještě stručně a přehledně:

1. Stále platí původní výtky z obou blogpostů: 101 % při 11 hlasech z 11 je chyba programátora, stejně jako součet 102 %.

2. Některým lidem některé věci prostě nevysvětlíte. Ale takové úpravy se v době papírových výstupů běžně dělaly, ostatně bylo i tzv. bankovní zaokrouhlování, kdy se u čísel s 5 na konci zaokrouhlovalo v případě předchozí liché cifry dolů a v případě sudé nahoru (nebo naopak?).

3. Pokud upozorňuji na součet 102 %, upozorňuji především na chybu ve zpracování dat. V komentářích k původnímu blogpostu jsem to vlastně napsal...

4. Se závěrem souhlasím. Hledání algoritmu ale nebyl tak úplně můj nápad.

Programátor
Programátor (neregistrovaný) 195.146.147.---
5. 2. 2009 13:06 Nový

Bankovní zaokrouhlování bylo nastaveno tak

Bankovní zaokrouhlování bylo nastaveno tak, aby v případě rozhodné cifry 5 byla poslední platná číslice zaokrouhleného čísla sudá (43.5 ==> 44, 44.5 ==> 44).

Nevím ale, jak by to řešilo tento problém, pořád hrozí, že 45.5%, 45.5% 9% dá po zaokrouhlení na celá procenta součet 101. Podobně zaokrouhlování 45.155, 45.155 a 9.69 na dvě desetinná místa povede i při použití bankovního způsobu k výsledku 100.01...

Díky Filipovi, variantu "Procentuální hodnoty jsou zaokrouhleny, součet proto nemusí být přesně 100%" použiju.

Janek
Janek (neregistrovaný) 86.49.14.---
6. 2. 2009 9:21 Nový

Nikdo netvrdí

[32] Nikdo netvrdí, že by bankovní zaokrouhlování řešilo váš teoretický problém, protože jak je na první pohled zřejmé, bylo určeno pro zpracování většího množství údajů.

Filipovu variantu jsem už formuloval v [17] v bodě 4.

M jako Molitan
M jako Molitan (neregistrovaný) 81.201.48.---
7. 2. 2009 1:51 Nový

| Nemám, ale Programátor už je zřejmě bez práce

| Nemám, ale Programátor už je zřejmě bez práce.

Leda pokud je zadavatel retardovany.

Honza
Honza (neregistrovaný) 85.207.47.---
7. 2. 2009 8:49 Nový

Myslím, že je na čase, abych jsem se k tomu vyjádřil

Myslím, že je na čase, abych jsem se k tomu vyjádřil.
Chyba byla opravdu pouze v zaokrouhlování, použil jsem špatnou funkci, která zaokrouhlovala pouze dolů (nebo nahoru, už nevím) - tím vznikla chyba.

Díky,
Programátor mikroblogy FB.

Callo
Callo (neregistrovaný) 88.101.123.---
9. 2. 2009 21:10 Nový

Nevidím jiné řešení než zlomky

Nevidím jiné řešení než zlomky. Bude to blbě vypadat, ale jinak to nevidím. Dále souhlasím, že je to sice chyba programátora, ale zodpovědnost nese tester.

Janek
Janek (neregistrovaný) 86.49.14.---
9. 2. 2009 22:50 Nový

Honzo, díky za vyjádření, ale nezdá se mi

[35] Honzo, díky za vyjádření, ale nezdá se mi, že by 101 % při 11 hlasech z 11 vzniklo chybným zaokrouhlením.

Zasílat nově přidané názory e-mailem