Ero sivun ”Koronavirus” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
Rivi 56: Rivi 56:
* Argumenttien spesifisyys (vakio) sp = 0.7
* Argumenttien spesifisyys (vakio) sp = 0.7
* Argumenttien totuuden prioritodennäköisyys P(A) = 0.5
* Argumenttien totuuden prioritodennäköisyys P(A) = 0.5
* Argumentin relevanssin eli Bayes-tekijän "priori" F(B+) = 1.5
* Argumentin relevanssin eli Bayes-tekijän "priori" F(B+) = 1.1
* Argumentin alavirtaan kohdistama relevanssikerroin R(C) = 3/2 (puolustus), 2/3 (hyökkäys)
* Argumentin alavirtaan kohdistama relevanssikerroin R(C) = 3/2 (puolustus), 2/3 (hyökkäys)
* Argumentin totuuden posterioritodennäköisyys ylävirran argumentin B jälkeen: P(A|B) = P(A|B+)P(B+) + P(A|B-)P(B-), jossa
* Argumentin totuuden posterioritodennäköisyys ylävirran totuusarvoon liittyvän argumentin B jälkeen: P(A|B) = P(A|B+)P(B+) + P(A|B-)P(B-), jossa
** P(A|B) = O(A|B)/(O(A|B)+1), jossa O(A|B) = O(A) F(B)
** P(A|B+) = O(A|B+)/(O(A|B+)+1), jossa O(A|B+) = O(A) F(B+)
* Argumentin relevanssin eli Bayes-tekijän "posteriori" F(B|C<sub>r</sub>) = F(B) &Pi; R(C<sub>r</sub>), jossa C<sub>r</sub> ovat ne ylävirran argumentit, jotka ovat relevanssityyppiä. Huom: tämä on pelkkää heuristiikkaa eikä perustu mihinkään matemaattisesti konsistenttiin ajatukseen. Se kuitenkin mahdollistaa kokonaisen keskustelun automaattisen päivittämisen.
** P(A|B-) = O(A|B-)/(O(A|B-)+1), jossa O(A|B-) = O(A) F(B-)
*** F(B-) = (1-sp)/(1-sp/F(B+))
* Argumentin relevanssin eli Bayes-tekijän "posteriori" F(B|C<sub>r</sub>) = F(B) &Pi; R(C<sub>r</sub>), jossa C<sub>r</sub> ovat ne ylävirran argumentit, jotka ovat relevanssityyppiä. Huom: vaikka tämä on matemaattisesti konsistentti rakenne, R(C):n määritelmä on epäselvä ja siksi sen arvon määräytyminen on pelkkää heuristiikkaa. Se kuitenkin mahdollistaa kokonaisen keskustelun automaattisen päivittämisen.


<rcode>
<rcode>
# This code is Op_fi####/koronakide on page [[Koronavirus]]
# This code is Op_fi5925/koronakide on page [[Koronavirus]]


library(OpasnetUtils)
library(OpasnetUtils)
library(gsheet)
library(gsheet)
objects.latest("Op_en3861", code_name="makeGraph") # [[Insight network]] makeGraph
get_probability_a_given_b <- function(
  paplus, # P(A+) prior probability for A being true
  pbplus, # P(B+) probability of argument B being true
  sp, # specificity of truth argument B
  fbplus # F(B+) Bayes factor for argument B when true
) {
  oaplus <- paplus/(1-paplus) # O(A) prior odds for argument A being true
  fbminus <- (1-sp)/(1-sp/fbplus)
  fbminus[fbminus<0] <- 5 # Error check; if it goes to negativity, it is actually large.
  oabminus <- oaplus * fbminus # O(A|B-) odds of A given that B is false
  oabplus <- oaplus * fbplus
  pabminus <- oabminus/(oabminus+1) # P(A|B-) probability of A given that B is false
  pabplus <- oabplus/(oabplus+1)
  pab <- pabplus*pbplus + pabminus*(1-pbplus) # P(A|B) probability of A given B
  return(pab)
}
# Prior odds and probability values
TRUTHLIKENESS_PRIOR_PA <- 0.95
RELEVANCE_PRIOR_FBPLUS <- 3
SPECIFICITY_PRIOR_SP <- 0.95
RELEVANCE_FACTOR_DEFENSE_RC <- 10
get_probability_a_given_b(0.8,0.99,0.99,1/10)


df <- gsheet2tbl("https://docs.google.com/spreadsheets/d/1Wzj_VqubkV6uomQS-St5UxzS5k25dDBs15DQFEsroOg/edit#gid=0")
df <- gsheet2tbl("https://docs.google.com/spreadsheets/d/1Wzj_VqubkV6uomQS-St5UxzS5k25dDBs15DQFEsroOg/edit#gid=0")
df$Item <- gsub("\\.$", "", df$position)
df <- df[1:133,] #-c(2,4,5,7,8)]
df$Object <- gsub("\\.[0-9]$","", df$Item)
df$truth_prior <- df$truth_post <- TRUTHLIKENESS_PRIOR_PA
df$relev_prior <- RELEVANCE_PRIOR_FBPLUS
df$specificity <- SPECIFICITY_PRIOR_SP
df$relevance_factor <- ifelse(df$class!="relevance", NA,
    ifelse(df$colour=="PRO", RELEVANCE_FACTOR_DEFENSE_RC, 1/RELEVANCE_FACTOR_DEFENSE_RC))
df$level <- nchar(gsub("[0-9]","", df$Item))
df$fbplus <- RELEVANCE_PRIOR_FBPLUS
args_by_level <- df$Item[order(-df$level)]
for(arg in args_by_level) {
  relevance_factor_of_parents_rcr <- prod(df$relevance_factor[df$Object==arg & df$class=="relevance"])
  df$fbplus[df$Item==arg] <- df$relev_prior[df$Item==arg] * relevance_factor_of_parents_rcr
  parents <- df$Item[df$Object==arg & df$class=="truth"]
  for(parent in parents) {
    df$truth_post[df$Item==arg] <- (get_probability_a_given_b(
      paplus = df$truth_prior[df$Item==arg],
      pbplus = df$truth_post[df$Item==parent],
      sp = df$specificity[df$Item==parent],
      fbplus = df$fbplus[df$Item==parent]
    ))
  }
}
df$edge.penwidth <- df$fbplus
formatted$edge.penwidth <- NULL
df$node.width <- df$truth_post*0.7
formatted$node.width <- NULL
df$node.fontsize <- df$truth_post*15
formatted$node.fontsize <- NULL
df$Context <- "Koronakide"
df$Context <- "Koronakide"
df$Item <- gsub("\\.$", "", df$position)
df$label <- substr(df$text, 1,30)
df$label <- substr(df$text, 1,30)
df$rel <- ifelse(toupper(df$type)=="PRO","relevant defense","relevant attack")
df$rel <- ifelse(toupper(df$colour)=="PRO","relevant defense","relevant attack")
df$rel <- paste0(ifelse(df$fbplus < 1, "ir", ""), df$rel)
df$type <- "argument"
df$type <- "argument"
df$Object <- gsub("\\.[0-9]$","", df$Item)
df$type <- ifelse(df$class %in% c("value","fact"), paste(df$class,"opening statement"), df$type)
df$Description <- df$text
df$Description <- df$text
objects.latest("Op_en3861", code_name="makeGraph") # [[Insight network]] makeGraph


gr <- makeGraph(df)
gr <- makeGraph(df)

Versio 23. heinäkuuta 2021 kello 07.30




Koronavirus käsittelee SARS-COV-2-viruksen ja sen aiheuttaman COVID-19-taudin olennaisia piirteitä.

Laskenta

Piirrä näkemysverkko Kialon koronakeskustelusta

Koronakide-hankkeeseen liittyen tehdään näkemysverkkoja koronarokotusten argumentaatiosta.

Laskennan logiikka on seuraava. Alkuperäiseen väitteeseen A kohdistuu argumentti B ja tähän kohdistuu argumentti C eli C → B → A. Prioritodennäköisyys, että A on totta eli A+ on P(A), kun meillä ei ole muuta tietoa. Kun lisätään argumentti B, saadaan Bayesin kaavalla

P(A|B) = P(B|A)P(A)/P(B).

Vastaava kaava saadaan todennäköisyydelle että A ei tapahdu eli A- jolloin P(A-) = 1-P(A+). Sama voidaan merkitä jos P(A) = p niin vastaava vedonlyöntisuhde (odds) on O(A) = q = p/(1-p) ja p = q/(q+1). Tällöin voidaan laskea vedonlyöntisuhde

P(A+|B) / P(A-|B) = P(B|A+)P(A+)/P(B) / (P(B|A-)P(A-)/P(B))
O(A|B) = P(B|A+)/P(B|A-) O(A).

Yhtälössä esiintyvää termiä P(B|A+)/P(B|A-) kutsutaan myös Bayes-tekijäksi tai -faktoriksi F eli

O(A|B) = F(B) O(A).

Merkintänä F(B) tarkoittaa yleensä, että on havaittu B. Kuitenkin ennen havaintoa meillä on kaksi vaihtoehtoa, B+ todennäköisyydellä P(B+) ja B- todennäköisyydellä P(B-) = 1-P(B+). Ensimmäisessä tapauksessa Bayes-tekijä on F(B+), mutta jälkimmäisessä tapauksessa F(B-) riippuu ehdollisen todennäköisyystaulun sisällöstä. Tämän kuvauksessa käytetään kahta parametria: todennäköisyys että B on totta eli P(B+) (B:n totuusarvo) ja BF(B+) eli P(B+|A+)/P(B+|A-) (relevanssi). Näistä lasketaan odotusarvo. Täydellisempi kuvaus sisältäisi kaikki mahdolliset kombinaatiot todennäköisyyksineen eli koko Bayes-verkon (BBN) yhteisjakauman. Se on kuitenkin myöhempien laskentojen asia.

Spesifisyys on testin (B) tarkkuus eli kuinka vähän tulee vääriä positiivisia: sp = P(B+|A+) = a/(a+c)

Sensitiivisyys on testin herkkyys eli kuinka vähän tulee vääriä negatiivisia: se = 1 - P(B+|A-) = 1 - b/(b+d)

Bayes-tekijä F(B+) = sp / (1 - se) eli sensitiivisyys se = 1 - sp/F(B+). Eli mitä parempi sensitiivisyys spesifisyyden suhteen, sitä suurempi F. Jos spesifisyys oletetaan vakioksi kaikissa argumenteissa, voidaan laskea kaikki tarpeelliset tiedot mukaan lukien F(B-), kun tiedetään argumentin P(B+) ja F(B+).

F(B-) = (1 - sp) / (1 - sp/F(B+))

Esimerkkinä laskennasta on oheinen taulukko.

A+ A- Sum
B+ 0.29 (a) 0.60 (b) 0.89
B- 0.01 (c) 0.10 (d) 0.11
Sum 0.30 0.70 1.00
F(B+) = P(B+|A+)/P(B+|A-) = 0.29/(0.29+0.01) / (0.6/(0.6+0.10)) = 0.29 * 0.70 / (0.30 * 0.60) = 203/180 ≈ 1.12778

F(B-) = P(B-|A+)/P(B-|A-) = 0.01/(0.29+0.01) / (0.10/(0.6+0.10)) = 0.01 * 0.70 / (0.30 * 0.10) = 7/30 ≈ 0.2333

sp = 0.29/0.30 = 29/30

se = 0.10/0.70 = 1/7

F(B-) = (1-sp) / (1-sp/F(B+)) = (1-29/30) / (1-29/30/(203/180)) = (1/30) / (1-174/203) = 203/(29*30) = 7/30 ≈ 0.2333

Argumentin vaikutus keskusteluun lasketaan seuraavasti:

  • Argumenttien spesifisyys (vakio) sp = 0.7
  • Argumenttien totuuden prioritodennäköisyys P(A) = 0.5
  • Argumentin relevanssin eli Bayes-tekijän "priori" F(B+) = 1.1
  • Argumentin alavirtaan kohdistama relevanssikerroin R(C) = 3/2 (puolustus), 2/3 (hyökkäys)
  • Argumentin totuuden posterioritodennäköisyys ylävirran totuusarvoon liittyvän argumentin B jälkeen: P(A|B) = P(A|B+)P(B+) + P(A|B-)P(B-), jossa
    • P(A|B+) = O(A|B+)/(O(A|B+)+1), jossa O(A|B+) = O(A) F(B+)
    • P(A|B-) = O(A|B-)/(O(A|B-)+1), jossa O(A|B-) = O(A) F(B-)
      • F(B-) = (1-sp)/(1-sp/F(B+))
  • Argumentin relevanssin eli Bayes-tekijän "posteriori" F(B|Cr) = F(B) Π R(Cr), jossa Cr ovat ne ylävirran argumentit, jotka ovat relevanssityyppiä. Huom: vaikka tämä on matemaattisesti konsistentti rakenne, R(C):n määritelmä on epäselvä ja siksi sen arvon määräytyminen on pelkkää heuristiikkaa. Se kuitenkin mahdollistaa kokonaisen keskustelun automaattisen päivittämisen.

+ Näytä koodi

Hae kirjanmerkit Firefoxista

+ Näytä koodi

Katso myös