Statisztika egyszerűen

Mágikus jelek nélkül...

Újra és újra... – Bayes-i keresési algoritmus R-ben - 3. rész

2021. január 29. 08:00 - glantos70

Bayes tétele

 

(Vissza az előző részhez…)

Az előző héten ott hagytam abba, hogy elkészítettem egy darab iterációt az első 100 mező keresése alapján, ahol a legnagyobb valószínűséggel vártuk a keresett objektumot. A befejező részben eljutok majd oda, hogy a teljes keresési folyamat láthatóvá válik.

Ezt viszont úgy szeretném megtenni, hogy egymás mellé tegyem az eredeti és a 100 mező keresése által felülvizsgált adatokat. Ehhez sajnos szükség lesz némi adatmanipulációra. Ez azért bosszantó, mert erre nem a feladat végrehajtása miatt van szükség, hanem mert a ggplot2 grafikai utasításai kötött formában kérik az adatokat, nem lehet csak úgy akárhogyan felépülnie az adattáblának.

nd <- data.frame(x = rep(d$x, 2), y = rep(d$y, 2),
                 ValueOfSearch = c(d$valueOfSearch, d$newValueOfSearch),
                 searched = rep(d$searched, 2),
                 search = rep(c("Before Any Searching", "First Wave"), each = nrow(d)))

Ehhez arra van szükség, hogy a d adattáblánkat egy kicsit átalakítsuk. Ehhez létrehozunk egy nd nevű új adattáblát (lásd a fenti kódot). Ennek az a célja, hogy a ValueOfSearch és a newValueOfSearch mezők adatai egy közös oszlopba kerüljenek és a search mezőben lévő TRUE és FALSE értékek alapján legyenek kettéválasztva. Ez a kódsor ismét eléggé összetettre sikeredett, így az egyes kódrészleteket részekre bontva fogom bemutatni. Lássuk az első sort…

nd <- data.frame(x = rep(d$x, 2), y = rep(d$y, 2), …

A kódrészlet eleje már ismerős, létrehozunk nd néven egy adattáblát, majd a zárójelben el kezdjük létrehozni a tábla oszlopait. Az x és az y oszlopokba belemásoljuk a d adattábla x és y oszlopait (d$x és d$y), de a korábban már tárgyalt rep() függvény segítségével kétszer egymás alá! Erre azért van szükség, hogy később a ValueOfSearch és a newValueOfSearch mezők ugyanúgy beazonosíthatók legyenek azután is, hogy azonos oszlopba másoltuk őket, mint ahogy a d adattáblában eddig.

… ValueOfSearch = c(d$ValueOfSearch, d$newValueOfSearch), …

Ez a sor annyit tesz, hogy az nd adattábla valueOfSearch oszlopába egymás alá másolja a d adattábla ValueOfSearch és newValueOfSearch oszlopait.

… searched = rep(d$searched, 2), …

Ez a sor a searched oszlop adatait is megduplázza majd egymás alá másolja a két egyforma adatsort.

… search = rep(c("Before Any Searching", "First Wave"), each = nrow(d)))

Az utolsó sor pedig létrehoz egy search nevű oszlopot, majd a sorok felét feltölti azzal, hogy „Before Any Search”, azaz minden keresés előtt, majd a második felét azzal, hogy „First Wave”, azaz első hullám. Ezt ugye azzal a módszerrel teszi, hogy a c() függvénnyel készít egy kételemű mátrixot, majd a mátrix mindkét elemét sorban annyiszor belemásolja a search oszlopba, amennyi a d adattábla sorainak száma. Ezt az nrow() függvény segítségével adja meg.

Így el is készült az új nd adattábla, amelynek a segítségével el tudjuk készíteni a fent említett diagramot, amely egymásra tudja tenni az első keresés előtti és utáni állapotot.

ggplot(nd, aes(x = x, y = y, z = valueOfSearch)) + stat_contour() + facet_grid(. ~ search) + geom_point(aes(color = searched, alpha = valueOfSearch))

A korábbi hasonló diagramokhoz képest igazából csak egyetlen függvényhívásban van különbség, ez a facet_grid() függvény. Ez hozza létre azt a rácsot, amelyben a két diagramot egymás mellé tudjuk helyezni. A ggplot2 csomagban nem lehet csak úgy megrajzolni előre egy rácsot, amibe bele illesztjük a grafikonokat, a függvény ezt a rácsot automatikusan hozza létre egy „csoportosító” oszlop alapján, amely jelen esetben a search oszlop, amit egy kicsit fentebb hoztunk létre arra, hogy elválassza a 100 keresés előtti és utáni adatokat. A ~ operátor azt jelenti, hogy valamelyik mezőnek a függvényében ábrázolja a ggplot függvény az adatokat. A . operátor pedig arra utasítja a függvényt, hogy a teljes adattáblát, vagyis az összes oszlopot – természetesen a search mezőt kivéve – használja fel a grafikon elkészítésekor.

Mit is látunk ezen a diagramon. A bal oldalon vannak a keresés előtti, a jobb oldalon a keresés utáni adatok. A jobb oldali diagramon található folt a 100 mező, amelyen a keresést végrehajtottuk. Látható, hogy ezen a területen a „magasságvonalak” megváltoztak, nyilván a keresés eredményeinek megfelelően. Érdekes, hogy annak ellenére, hogy a keresett mezőkben nem találtuk meg a keresett objektumot, az objektum megtalálásának valószínűsége nem változott nullára! Persze, hiszen attól, hogy nem találtuk meg az objektumot ezekben a mezőkben, attól még ott lehetnek, mert a detektálás valószínűsége sem 100%. Elképzelhető, hogy az objektum ott van valamelyik mezőben, csak nem találtuk meg! További megfigyelés még, hogy a nem keresett mezők esetében a „magasságvonalak” kiterjedése megnőtt. Azzal, hogy a keresés középpontjában lévő mezőkben nem találtuk meg az objektumot, egy kicsit megnőtt annak a valószínűsége, hogy esetleg a távolabbi mezők valamelyikében fogjuk megtalálni, amit keresünk.

Végül jöjjön a legjobb rész. Itt azt szeretném bemutatni, hogyan változik a keresési terület annak függvényében, hogy a fenti algoritmust fegyelmezetten betartva újra és újra átvizsgáljuk azt a 100 mezőt, ahol a keresett objektum megtalálási valószínűsége a legnagyobb. A célom az, hogy lefuttatok 1000 darab 100 mezős keresést és megnézem, hogyan változnak majd a keresési valószínűségek az egyes mezőkben.

Először is érdemes létrehozni egy néhány táblát, amelyekben a keresési ciklusok közben keletkezett adatokat fogjuk tárolni. Először is hozzunk létre egy searchCount nevű tömböt (egy oszlopból álló táblázatot), amely pontosan annyi elemből fog állni, mint a d adattábla, azaz a keresési terület minden egyes mezőjéhez fog egy elem csatlakozni. A későbbiekben látni fogjuk, hogy ebbe a tömbbe fogjuk eltárolni, hogy az egyes mezőket hányszor jelöltük ki keresésre a keresési ciklusok során.

searchCount <- rep(0, nrow(d))

A következő lépésben létrehozásra kerül két 1000 elemű tömb, amelyben majd a LEP és a SEP értékeit fogjuk elmenteni. A probInSearchArea fogja tartalmazni a LEP, a probFindInGrid pedig a SEP értékeit. Ezekbe a tömbökbe a LEP és a SEP összesített értékeit fogjuk elmenteni a keresett objektum ÖSSZESÍTETT megtalálási valószínűségeit. Az ezekben eltárolt értékek a későbbiekben megmutatják majd, hogyan csökken a megtalálás valószínűsége, ahogy egyre több mezőt egyre többször vizsgálunk át. Ez egy fontos része lesz majd a módszernek, mert ezek segítségével tudjuk majd meghatározni azt, hogy mikor érdemes abbahagyni a keresést.

probInSearchArea <- numeric(1000)
probFindingInGrid <- numeric(1000)

A következő lépésben létrehozzuk a ValueOfSearch és a SEP értékeihez tartozó kiinduló adatok mátrixát és feltöltjük a d adattáblában már kiszámított értékeivel.

p0 <- d$ValueOfSearch
pD <- d$SEP

Most pedig kezdődjön az 1000 darab 100 mezős keresés ciklusa:

for (i in 1:1000) {
  searchLocations <- rank(-1 * p0) <= 100
  searchCount <- searchCount + searchLocations
  probInSearchArea[i] <- sum(p0[searchLocations])
  probFindingInGrid[i] <- sum(pD)
  p0 <- bayesUpdate(searchLocations, p0, pD)
}

Nézzük részletesen, mit is csinál a kód.

for (i in 1:1000) { …

Az első sorban a klasszikus ciklus programozásnak megfelelően létrehozunk egy i változót, majd megkérjük az R-t, hogy ismételje meg a {} zárójelben lévő műveleteket úgy, hogy i értékéhez minden ciklusban hozzáad egyet.

… searchLocations <- rank(-1 * p0) <= 100 …

A kapcsos zárójelen belül az első sorral már találkoztunk korábban, itt választjuk ki a 100 vizsgált mezőt, ahol a találati valószínűség a legnagyobb.

… searchCount <- searchCount + searchLocations …

Ez a sor már több magyarázatot igényel. Korábban már tisztáztuk, hogy az előző sorban létrehozott searchLocations tömb logikai (TRUE és FALSE) értékeket tartalmaz. Ezt hogyan tudjuk hozzáadni egy másik tömbhöz? Úgy, hogy a FALSE érték 0-t, a TRUE érték pedig 1-et jelent az R számára, így már értelmezhető a dolog. Mivel a searchCount tömböt a cikluson kívül definiáltuk és minden egyes elemét feltöltöttük nullákkal, de később a cikluson belül már nem nullázzuk, ezért ebben a tömbben gyűjtjük, hogy a keresési ciklusok során melyik mezőt hányszor kutattuk át.

… probInSearchArea[i] <- sum(p0[searchLocations])
probFindingInGrid[i] <- sum(pD) …

Ahogy azt fentebb tisztáztam, ebbe a két tömbbe mentjük el azt, hogy az egyes 100 mezős keresési ciklusok végén hogyan változik a keresés teljes megtalálási és detektálási valószínűsége.  

… p0 <- bayesUpdate(searchLocations, p0, pD) …

Végül a ciklus előtt definiált p0 tömbben tárolt valószínűségeket a korábban már használt bayesUpdate() függvény segítségével elvégezzük a valószínűségek frissítését. Ez a frissítés is kummulált lesz, hiszen a p0 tömb is a ciklus előtt került létrehozásra. Az az érdekes, hogy a keresési algoritmus szempontjából ez az egy sor a lényeges, az összes többi kód csak valamiféle adatgyűjtésre szolgál.

A diagram ez esetben viszont egy kicsit mást fog nekünk megmutatni, a pontok árnyalata nem a keresési valószínűséget fogja ábrázolni, hanem azt, hogy melyik mezőt hányszor kutattuk át. Ezzel jobban szemléltethető a keresési folyamat előrehaladása. Ezért is gyűjtöttük a searchCount tömbben, hogy az egyes mezőket hányszor kutattuk át. A tömb elemeihez most hozzárendeljük a mezők x és y koordinátáit.

nSearches <- data.frame(x = d$x, y = d$y, count = searchCount)

A korábban már ismert pontdiagramot most az nSearches adattábla alapján hozzuk létre.

ggplot(nSearches, aes(x = x, y = y, z = count)) + stat_contour() + geom_point(aes(alpha = count))

Ez természetesen egy állóképet fog kirajzolni, de a keresési folyamat jobb szemléltetése érdekében több fázisdiagramot is kinyomtattam, amelyeket összefűztem egy kis animációvá.

search_anim.gif

Az animáció jól mutatja, ahogyan a keresés elindul az eredeti középpontból és a sötét pontok (minél sötétebb egy pont, annál többször kutattuk át azt a mezőt) hogyan haladnak a keresési terület bal széle felé. Az is kiderül, hogy mintha kialakulna egy második keresési központ az ábra bal alsó sarka közelében.

A legvégén nézzük meg azt, hogy hogyan lehet megállapítani, meddig érdemes folytatni a keresést. Azt mondtuk, hogy az összegzett keresési valószínűségek alapján meg tudjuk mondani, hogy egy adott keresési ciklus végrehajtása után mennyivel csökken a keresett objektum megtalálásának esélye. Ehhez ismét adattáblává alakítjuk az eredetileg tömbként definiált probInSearchArea változót egyszerűen csak úgy, hogy egy másik oszlopban mellé tesszük az ismétlések sorszámát.

searchValue <- data.frame(serial = 1:1000, TotalLEP = probInSearchArea)

Az így kapott searchValue változó segítségével ábrázolom majd egy újabb grafikonon az összegzett megtalálási valószínűség változását ciklusról ciklusra.

ggplot(searchValue, aes(x = serial)) +
  geom_line(aes(y = TotalLEP), lty = 2) +
  scale_y_continuous("Objektum megtalálásának valószínűsége") +
  scale_x_continuous("Sikertelen keresések száma")

És íme a diagram.

A diagramból azt olvashatjuk ki, hogy az első keresési ciklusok után meredeken zuhan a megtalálás esélye, majd kb. 250 keresés után már annyira kicsi ez a valószínűség, hogy itt már nem érdemes folytatni, hiszen a keresésbe fordított erőforrások mennyisége már nem áll arányban a várható eredménnyel.

Összegzés:

Ez egy egészen komplex feladat volt, még úgy is, hogy nem én írtam a kódot, csak kipróbáltam, amit valaki más megírt. Igyekeztem annyira részletesen leírni a teendőket, hogy a kód minden részletét meg lehessen érteni és követni lehessen, ahogy a módszer körről – körre felülvizsgálódnak a mezők találati valószínűségei és követhető legyen az egész feladat. Bár így egy kicsit bonyolultnak tűnik, szerintem egy egyszerűbb példa esetében kézzel is kiszámolhatók az eredmények, amelyek az ismétlések során keletkeznek. Csak persze egy egyszerűbb probléma esetén nem igazán van értelme egy ilyen bonyolult algoritmust alkalmazni. A megoldás menete és a programsorok alapján az a benyomásom, hogy olyan valaki írta, aki igen tapasztalt és jól ismeri az R környezetet, bevallom én nem tudtam volna így megírni. De nem is ez a lényeg, inkább az, hogy abban az igen ritka esetben, ha valakinek pont erre lenne szüksége, ezen leírás alapján a módszer rekonstruálható és adaptálható.

Aki pedig hobbiból tanulmányozza az r-t, mint ahogy én is, csak azt tudom javasolni, hogy másolja be az idézett programrészleteket az RStudio-ba és lépésenként menjen végig a folyamaton, nézze meg, hogy melyik tömbben és adattáblában mi történik, nagyon sokat lehet belőle tanulni.

Jó szórakozást! (Ha bírod idegekkel) :-)

Források:

R-Bloggers – Bayesian Search Models
https://www.r-bloggers.com/2014/03/bayesian-search-models/

Hadley Wickham: Elegant Graphics for Data Analysis, Springer, 2016
https://ggplot2-book.org/index.html

R ggplot2 cheat sheet
https://rstudio.com/wp-content/uploads/2015/03/ggplot2-cheatsheet.pdf

19 komment

A bejegyzés trackback címe:

https://statisztikaegyszeruen.blog.hu/api/trackback/id/tr2016338920

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

gigabursch 2021.01.31. 05:44:38

Hmmmm....
Vajon a természetben ezzel a modellezéssel hogyan lehetne megkeresni
- egy rekord szarvasbikát
- egy védett lepke tápnövényét
- egy potenciálisan alkalmas tölgy rönköt adó fát
- egy zátonyt építő örvényt
- egy jó/rossz termiket
- a börtönben nem a menetrend szerint járó őrt.
Izgalmas kérdések, amikre ha az íróasztal mellől tud valaki választ adni, akkor nagyon bele tudna nyúlni a tutiba.

fordulo_bogyo 2021.01.31. 05:44:40

Engem itt elvesztettel.
Le lehetne irni ennek az elvet programozas es szofrver nelkul, vagy felejtsem el az egeszet?
Arra lennek kivancsi, hogy a kereses soran hogyan valtozott a vart valoszinuseg a kereses sikertelensege eseten?
Mind sikertelen volt. Akkor mi okozott kulonbseget a mezokben?

glantos70 2021.01.31. 05:52:20

@gigabursch: Valószínűleg nem, sőt az elveszített pénztárcámat sem így keresném meg... :-)

A módszert jelenleg is kifejezetten a tengeren elveszett járművek vagy emberek megkeresésekor használja az amerikai partiőrség.

glantos70 2021.01.31. 06:05:29

@fordulo_bogyo: Az elvet a USS Scorpion megtalálásáról írt cikkben próbáltam összefoglalni.

Ragadjunk ki egyetlen mezőt a rengeteg közül. Még egyetlenegyszer sem vizsgáltam át. Van egy előzetes feltételezésem arról, hogy mekkora az esélye annak, hogy a keresett tárgy ebben a mezőben található. Odamegyek ehhez a mezőhöz, és a tökéletlen radarommal átkutatom a mezőt. Nem találtam meg a keresett tárgyat. Vajon biztos vagyok abban, hogy a keresett tárgy nincs a mezőben, ha tudom, hogy a kereséshez használt eszközöm nem tökéletes? Valószínűleg nem, mert a kisördög végig ott fog bujkálni a kisagyamban, hogy mi van, ha mégis ott van a keresett tárgy a mezőben, csak nem vettem észre. Viszont, ahogy egyre többször vizsgálom át a mezőt, egyre több oldalról, esetleg több különféle műszer beállítással pásztázom a keresési területet, úgy leszek lépésről lépésre egyre biztosabb abban, hogy a keresett tárgy nincs ott.

Veled fordult már elő olyan, hogy kerestél valamit, háromszor is feltúrtad érte a lakást és végül egy olyan helyen találtad meg, amit már ötször átkutattál előtte? Velem pont most történt ilyen, a lakáskulcsom kiesett a zsebemből a kocsiban és becsúszott a két ülés közé. Többször is megnéztem ott is, de valahogy pont egy olyan helyen volt, hogy az első felületes kereséskor nem találtam meg. Csak később, amikor már a többi helyen nem találtam és egyre biztosabb lettem abban, hogy valahol ott kell lennie, néztem meg alaposabban a két ülés között. Be volt csúszva a sínek alá...

Szerintem ez is valami ilyesmi, csak nem az olyan egyszerű problémákra találták ki, mint az elveszett lakáskulcs...

fordulo_bogyo 2021.01.31. 17:28:54

@glantos70: Koszonom a valaszt!
Ami nem vilagos nekem, hogy egy sikertelen atvizsgalas milyen iranyba valtoztatja meg az eloztes valoszinuseget.
Tegyuk fel, az egyszeuseg kedveert, hogy fogalmam sincs, hogy hol van a targy egy 10x10-es mezoben.
Minden egyes mezoben 0.01 a valoszinusege annak, hogy epp ott van.
Ha egy 50% hatasfoku eszkozzel keresek, akkor a sikertelenul atvizsgalt mezoben 0.01*0.5-re csokken a valoszinuseg, es a maradek 99-ben ben 0.1+(0.01*0.5/99)-cel no. Ket cella sikertelen atvizsgalasa utan azokban azokban egyforma (kisebb) valoszinuggel lesz a targy es a maradek 98-ban meg egyforma, de magasabb valoszinuseggel.
50 cella atbezese utan a mezonek a vizsgalt feleben osszesen 0.5 * 0.5 = 0.25 a val;oszinuseg, ami az 50 kocka mindegyikeben 0.005 valoszinuseget jelent, az atvizsgalatlan kockak osszessegeben a valoszinuseg 0.75-re, kockankekt 0.15-re novekszik.
Ha minden kockat atvizsgaltam egyszer sikertelenul, akkor a valoszinuseg visszaall 0.01-re.
Ha uja kezdem a keresest es masodszor is atvizsgalom a kockakat, ugyanez jatszodik le.
Ha kezdetben nem egyenletes volt a hely valoszinusegenek az eloszlasa, az csak egy konstanssal szorozza meg az egyes cellakat.
Ebbol nekem csak annyi jon le egyenletes eloszlas eseten, hogy nezzem meg minden lehetseges helyes, azutan kezdjem ujra es ujbol nezzem vegig mindet, mielott ujsa kezdenem a keresest.
Ha azonban egy kiemelt kockaban a valoszinuseg mondjuk 10-szerese az osszes tobbinek, akkor egy sikertelen kereses utan bar ennek a valoszinusege csokken, de meg mindig magasabb, mint a tobbie, tehat maradok ebben a kockaban, amig annyiszor at nem neztem, hogy a valoszinuseget az egymast koveto sikertlene keresesek lecsokkentik a tobbi kocka szintjer, akkor nezem a kovetkezo kockat.
Ha egy kockaban 10-szeres, mellette 5-szoros, mellette 2-szere a valoszinuseg, akkor mindeg az aktualisan legmagasabb vloszinusegi kockakban keresek es csokkentem a valoszinuseget, ha egy ido utan egy masik kocka valoszinuseg magasabb lesz, akkor ott folytatom.
Jol gondolkozok, vagy tevedek?

glantos70 2021.01.31. 20:33:41

@fordulo_bogyo: Két különböző esetet említettél. Az első, amikor a detektálás valószínűsége minden négyzetben egyforma, a második, amikor egy négyzetben a detektálás valószínűsége valami miatt sokkal nagyobb, mint a többi esetében. És valóban igazad is van. Az első esetben, amikor a keresett tárgy előfordulásának és/vagy detektálásának a valószínűsége állandó, akkor az egy monoton szekvenciális keresésre egyszerűsödik vissza. A második esetben ismét csak a kulcsos példát tudom említeni. Ha szinte biztosan emlékszem, hogy hol láttam a kulcsot utoljára, akkor igenis többször is átkutatom ugyanazt a helyet, mert érzem, hogy ott kell lennie.

Szóval szerintem jól gondolkodsz, az általad említett helyzetek mind ennek az általánosabb törvényszerűségnek a speciális esetei, ahol a törvényszerűségek leegyszerűsödnek, ami miatt nincs szükség a statisztikai hókuszpókuszokra...

glantos70 2021.01.31. 21:17:43

@fordulo_bogyo: Még egy dolog: A 10x10-es mátrixban lennie kell valamiféle kitüntetett pontnak, ahol valami miatt nagyobb a keresett tárgy előfordulásának a valószínűsége. Ez a USS Scorpion, illetve akorábban elveszett atombombák esetében is így volt. Enélkül valóban minden mezőben egyforma az előfordulás valószínűsége, így kilyukadunk annál az esetnél, amiről te írtál.

glantos70 2021.02.01. 11:17:01

@fordulo_bogyo: Elkészítettem az általad kért szimulációt táblázatkezelőben is, péntekre készítek egy cikket róla és megpróbálom csatolni az excelt is...

fordulo_bogyo 2021.02.03. 12:35:21

@glantos70: Koszonom, kivancsian varom, azt hiszem az elvet sikerul megertenem, koszonom!
OFF: nezd mit talaltam, ha van idod es kedved, erdekelne a velemenyed (szerintem ez nem korrekt, csak nagykepu altudomanyoskodas). De ne erezd erkolcsi kenyszernek a valaszt, csak erdekessegkent hoztam:
zenodo.org/record/4477081#.YBoXojFTmom

Ennek a cikknek kapcsan talaltam ra:
www.origo.hu/tudomany/20210202-egy-uj-tanulmany-allitja-szinte-biztos-hogy-a-covid19-virus-laboratoriumbol-szabadult-el.html

glantos70 2021.02.03. 13:01:24

@fordulo_bogyo: Hú, ez nagyon érdekes! Köszönöm, hogy felhívtad rá a figyelmem. Erről most így nem biztos, hogy ki mernék jelenteni bármit is, mert a tanulmány majdnem 200 oldal és tele van olyan dolgokkal, amihez nem értek. Első ránézésre nagyon rendszerezett és logikus a tanulmány felépítése, pontról-pontra végigvezet a logikai láncon. Viszont szokás szerint nem ismerteti a részletes számításokat, így azt az olvasónak kell valahogyan kilogikáznia a szöveg és az adatok alapján, így az eredmények visszaellenőrzése meglehetősen nehézkes.

Viszont a tanulmány során alkalmazott kéthipotézises bayes-teszt (vagy hogy hívják magyarul :-) ) megérne egy misét, illetve egy cikket, persze egy sokkal egyszerűbb példával.

glantos70 2021.02.03. 13:03:35

@fordulo_bogyo: Azért kíváncsi leszek, hogy mi lesz a véleményed a táblázatkezelős változatról. A kérdéseid tényleg inspirálóak voltak és én magam is tanultam belőle egy csomó új dolgot... Nagyra értékelem az érdeklődésed.

fordulo_bogyo 2021.02.03. 15:44:47

@glantos70: Koszonom, es erdeklodve varom a tablazatkezelos valtozatot.
Mar a hajo/bomba akarmi kereses peldanal is fermerult bennem (de ott csak halvanyan), hogy a valoszinusegek meglehetosen puha, valamilyen szinten onkenyes ertekek. Mind a kiindulasi valoszinuseg, mint a kereses hatekonysagat leiro valoszinusegi valtozo erteke az. Inkabb csak valami trendet jelenznek. Ugyanakkor az hasznalt ertekuk (es kulonosen azoknak az aranya) fuggvenyeben egeszen mas keresesi algoritmust diktalnak. Ugye ha azt mondjuk hogy a kozpontban kiindulaskent 90% a valoszinuseg, es a kereso 50%-os hatekonysagu, akkor sokaig a kozpontban keresgelunk, mig ha csak 50%-ot adunk a kozpontnak es masik 50% a szomszedos mezoke, es 90% a keresonk hatekonysaga, akkor mar az elso altvizsgalas utan megyunk a szomszedos mezokre.

glantos70 2021.02.03. 15:52:15

@fordulo_bogyo: Az valóban teljesen igaz, hogy a módszer gyenge pontja a kiinduló valószínűségek megállapítása. A tengeralattjáró esetében megvolt az a 2-3 hely, ahol egy bizonyos valószínűséggel sejtették a jármű tartózkodási helyét és jobb híján alkalmazták a Monte-Carlo szimulációt a keresési terület meghatározására. A kereséshez alkalmazott radarok hatásfoka - feltételezésem szerint - jól ismert volt, mert korábban ezeket más módon már megmérték és igazolták.

A táblázatkezelős szimuláció alapján azt mondanám, hogy a keresési kép egyfajta kusza csavargásra emlékeztet. A keresés hullámzik a kiindulási ponthoz közeli és távoli mezők között és ez a hullámzás halad fokozatosan kifelé. Őszintén megmondom, hogy nem próbálgattam a file-t különböző beállításokkal, úgyhogy jelenleg fogalmam sincs, hogy a különféle beállítások hogyan befolyásolják a keresési algoritmus viselkedését.

fordulo_bogyo 2021.02.04. 09:59:14

@glantos70: A covid-19 tanulmany kapcsan: nekem valamilyen szinten szakmam (molekularis biologus kutato vagyok), masfelol meg manapsag mindenki virus es jarvanyszakerto (ertekelem, hogy te azt irod, hogy "tele van olyan dolgokkal, amihez nem értek".
Itt nagyon kemeny es hatarozott az az erzesem, amit az elozo kommenttben kezdtem kifejteni:
A valoszinusegek, amikkel a covid tanulmany dolgozik, szerintem hasrautes alapjan keszult valoszinusegek. Illusztraciok, nem pedig mert vagy szamolt ertekek.
Eloszor a forras helye: "Zenodo tudományos lap" - ez egy nyilvanos es nyitott adatbazis, szabadon barmi belekpolhato.
Nezzunk kicst bele a cikkbe:
The starting probability for origin of SARS-CoV-2 was set with the zoonotic or natural hypothesis at 98.8% likelihood with the laboratory origin hypothesis set at 1.2%. Miert pont annyi? Nincs erdema magyarazat.

Mellekszal:
Rogton utana egy oldalt egy megerostetlen adat elemzesevel foglalkozik, hangulatcsinalonak, ami egymaga bizonyitek lenne... nem nem az emberi eredetre, hanem arra, 2019-ben mar az orosz vakcinaval kezeltek kinai betegeket... :-( am beismeri, hogy ez nem bizonyitott. Mellekszal OFF

Az elso adat ami valtoztatja a valoszinuseget, hogy Vunaban van egy viruskutao intezet es arrafele jelente meg a virus. Ez TENY. De ez miert eppen 3.7%-kal noveli a a virus emberi kezitesenek valoszinuseget?

Azutan kesobb: As can be seen, the starting point assumed an 82% probability of a zoonotic origin. This starting point is a reasonable value and will be used here. Annyi a 82% magyarazata, hogy az egy elfogadhato szam, esszeru. OK, de miert pont annyi?

Itt van az eb elhantolva:
Other quantitative evidence. If a piece of evidence can be quantified but it does not reach a significance of p = 0.05 it will be used directly in the likelihood adjustment.Non-quantitative evidence. For evidence that cannot be quantified, the decision was made to treat these as quantitative outcomes with a 51% to 49% likelihood value with respect to the ‘winning’ hypothesis. This has the effect of increasing the probability of that hypothesis for that step in the Bayesian analysis by 1.04. This 51%/49% concept is related to the legal standard of the ‘preponderance of the evidence’ used in civil litigation."

Onkenyesen ad valoszinusegeket, a polgari jog (valamelyik orszagban) alapjan.
Ez nem tudomany.

"The impact of each piece of evidence was adjusted further by a subjective discount factor. This is a qualitative assessment of the overall veracity of a particular ... 60%-100%" - magyarul: onkenyeseb teljes erkeben beszamit bizonyos dolgokat, es csak 60%-ban fogad el masokat. Ez eleve kizartja, hogy tudomanyos legyen, ez velemenyes. Az meg hab a tortan, hogy miert eppen 60%-on szamlo egy neki nem tetszo bizonyitekot, miert nem 33.5% erteken.

Szerintem ez a cikk kivalo pelda arra, hogy hogyan lehet visszaelni, vudu varazslasra hasznalni egy onmagaban kivalo megkozelitest, ebben az esetben Bayes modszeret.

A modszer egyik resze, hogy megfullaszt az irrelevans adatokkal... sok oldalon keresztul elemez dolgokat, es utana kijelento, hogy azok nem valtoztatjak a valoszinuseget... kifarasztasra jatszik.
Azutan bedobja az onkenyes szamait.

Bocs a hosszu szovegelesert.

glantos70 2021.02.04. 10:12:44

@fordulo_bogyo: Semmi gond, teljesen jó a téma. Az még valamennyire érthető lenne, hogy kiindulásként választ egy teljesen tetszőleges valószínűségi értéket. Ez nem szokatlan a Bayes-i világban. A második megállapításoddal már én is teljesen egyetértek. Az, hogy egy kutatóintézet van Vuhanban, tényleg nehezen számszerűsíthető. Ez szerintem egy igen-nem alapú döntés. Vagy van kutatóintézet Vuhanban, vagy nincs. De még ha bonyolítjuk is, mennyi a valószínűsége annak, hogy az intézetben alkalmazott biztonsági intézkedések ellenére kiszabadul a vírus? Ez pont ugyanaz a kérdés, mint a véletlen atombomba robbanás bekövetkezési valószínűségének kiszámítása. Ehhez tényadatokra lenne szükség, például, hogy milyen biztonsági intézkedések vannak, ezek mennyire hatékonyak, milyen hasonló balesetek történtek már korábban, és így tovább...

Csak magánvélemény: Trump igen sokszor emlegette ezt a narratívát, el tudom képzelni, hogy valakiknek érdeke volt olyan evidenciákat gyártani, amelyek alátámasztják ezt. De igazából ebbe nem szeretnék belemenni, mert ez hasonló spekuláció lenne, mint a cikk maga.

Ami engem nagyon zavar, hogy a tudományos cikkekben nem adják oda a nyers adatokat és a számításokat sem közlik, így az egyes megállapításokat még akkor is nagyon nehéz visszaellenőrizni, ha egyébként az olvasó érti a témát. Persze mindennek megvan a maga oka, mindenki próbálja védeni a tudást...

Arról nem is beszélve, hogy mennyire elterjedtek a világban a fake-news és a félrevezető információk, amelyek valakinek az érdekét szolgálják, így nem meglepő, ha vannak laposföld hívők, meg oltástagadók, és hasonlók. Igazából az ember elveszti a talajt a lába alól, mert nem tudja, hogy mik azok a törvényszerűségek, amelyek valóban irányítják ezt a bolygót.

Mondjuk pont emiatt szerettem nagyon a mythbusters sorozatot... :-)

glantos70 2021.02.04. 10:22:51

@fordulo_bogyo: Azon gondolkodtam, hogy le lehet-e csupaszítani az általad elemzett cikket azokra a faktorokra, amelyekről tényleg tudjuk, hogy milyen valószínűséggel fordulhatnak elő (már ha van bennük ilyen), és ezeket megvizsgálva vajon mi jönne ki? Illetve a kiindulási valószínűséget én 50-50%-ra venném, merthogy a kiinduláskor nem tudunk a valószínűségekről semmit. Vagyis a vírus vagy a természet, vagy az ember általa alkotott dolog, vagyis olyan, mint az érme feldobás.

A lecsupaszított tényadatokkal megismételve a vizsgálatot kijönne egy sokkal megalapozottabb eredmény.

fordulo_bogyo 2021.02.04. 14:13:54

@glantos70: Szakmai cikkek lektorakent irom: ha a cikk alapjan nem reprodukalhato a kutatas, ha nem ad meg elegendo reszletet, kiserleti odszer, adatot, akkor visszkuldom hinaypotlasra... nem veletlen, hogy ez mu sem cikk, hanem csak egy feltoltott kezirat.

Az még valamennyire érthető lenne, hogy kiindulásként választ egy teljesen tetszőleges valószínűségi értéket. - Termeszetesen. De tizedesjegy pontossaggal? :-(

gigabursch 2021.02.04. 14:13:57

@glantos70:
Öööö..., csak ne essünk abba a hibába - a jól ismert statisztikai alapesetet vizsgálva -, hogy mennyi az esélye annak, hogy a szobában itt áll mellettem Lenin elvtárs.
Ugyanis az egyik megközelítés az, hogy 50%, mert vagy itt áll mellettem, vagy nem.

glantos70 2021.02.04. 14:22:56

@fordulo_bogyo: "... Az még valamennyire érthető lenne, hogy kiindulásként választ egy teljesen tetszőleges valószínűségi értéket. - Termeszetesen. De tizedesjegy pontossaggal? :-( " - Na ja!

"... Ugyanis az egyik megközelítés az, hogy 50%, mert vagy itt áll mellettem, vagy nem. ..." - Amennyire értek a Bayes-i statisztikához, ez nem szokatlan. Az viszont igaz, hogy létezik egy ún. empirikus Bayes-i megközelítés, ahol előzetesen ismert információk alapján határozzuk meg a kiinduló valószínűségeket. A fenti keresés is ilyen, ahol ismertek voltak az egyes mezőkben a valószínűségek a Monte-Carlo szimulációk alapján, illetve a radar hatásfoka is ismert volt.

Ezt viszont csak kb. a hatvanas évek óta alkalmazzák, előtte az 50-50% megközelítés teljesen elterjedt volt a Bayes-követők között. A frekventistáknak ez volt az egyik legerősebb érve a Bayes-i statisztika ellenében. Én egyébként elsősorban a frekventista megközelítést pártolom, de azt is látom, hogy bizonyos esetekben jól alkalmazható.

Az viszont igaz, hogy egyikhez sem értek igazán... :-)
süti beállítások módosítása