Ero sivun ”Koronavirus” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
Rivi 108: Rivi 108:
) {
) {
   dfl <- opasnet.data(file_path, wiki, unzip=file_name)
   dfl <- opasnet.data(file_path, wiki, unzip=file_name)
#  dfl <- read_lines("~/discussion/climate/what-is-the-best-measure-to-decrease-climate-change-31294.txt")
  #  dfl <- read_lines("~/discussion/climate/what-is-the-best-measure-to-decrease-climate-change-31294.txt")
   dfl <- strsplit(dfl, "\n")[[1]]
   dfl <- strsplit(dfl, "\n")[[1]]
   df_title <- gsub("Discussion Title: ", "", dfl[1])
   df_title <- gsub("Discussion Title: ", "", dfl[1])
Rivi 123: Rivi 123:
   df$level <- df$level * ifelse(added_argument < 99, 1, ifelse(added_argument>999, 10, 0.1))
   df$level <- df$level * ifelse(added_argument < 99, 1, ifelse(added_argument>999, 10, 0.1))
   df$Object <- gsub("\\.[0-9]*$","", df$Item)
   df$Object <- gsub("\\.[0-9]*$","", df$Item)
   df$seprime <- ifelse(df$colour=="Pro",sensitivity_prime, sensitivity_prime_attack)
   df$relevance <- ifelse(df$colour=="Pro",sensitivity_prime, sensitivity_prime_attack)
   df$truth <- ifelse(grepl("http", df$text), truth_prior_with_reference, truth_prior)
   df$truth <- ifelse(grepl("http", df$text), truth_prior_with_reference, truth_prior)
   df$class <- ifelse(df$class=="", "truth", df$class)
   df$class <- ifelse(df$class=="", "truth", df$class)
Rivi 143: Rivi 143:
) {
) {
   thesis <- df$colour=="Thesis"
   thesis <- df$colour=="Thesis"
   df$edge.penwidth <- abs(df$seprime*15)
   df$edge.penwidth <- abs(df$relevance*15)
   df$node.width <- ifelse(thesis,1,df$truth)
   df$node.width <- ifelse(thesis,1,df$truth)
   df$node.fontsize <- ifelse(thesis,15,df$truth*20)
   df$node.fontsize <- ifelse(thesis,15,df$truth*20)
Rivi 151: Rivi 151:
   df$label <- paste(df$label, ifelse(thesis, signif(df$truth,2),""))
   df$label <- paste(df$label, ifelse(thesis, signif(df$truth,2),""))
   df$rel <- ifelse(toupper(df$colour)=="PRO","relevant defense","relevant attack")
   df$rel <- ifelse(toupper(df$colour)=="PRO","relevant defense","relevant attack")
   df$rel <- paste0(ifelse(abs(df$seprime) < RELEVANCE_LIMIT, "ir", ""), df$rel)
   df$rel <- paste0(ifelse(abs(df$relevance) < RELEVANCE_LIMIT, "ir", ""), df$rel)
   df$type <- "argument"
   df$type <- "argument"
   df$type <- ifelse(df$class %in% c("value","fact"), paste(df$class,"opening statement"), df$type)
   df$type <- ifelse(df$class %in% c("value","fact"), paste(df$class,"opening statement"), df$type)
   df$Description <- df$text
   df$Description <- df$text
   drop <- df$Item[(df$truth<TRUTH_LIMIT | abs(df$seprime)<RELEVANCE_LIMIT) & df$level>0]
   drop <- df$Item[(df$truth<TRUTH_LIMIT | abs(df$relevance)<RELEVANCE_LIMIT) & df$level>0]
   if(verbose) print(drop)
   if(verbose) print(drop)
   out <- character()
   out <- character()
Rivi 186: Rivi 186:


file_list_covid <- c(
file_list_covid <- c(
"are-tracking-apps-a-legitimate-and-proportional-means-to-fight-covid-19-36145.txt"                ,
  "are-tracking-apps-a-legitimate-and-proportional-means-to-fight-covid-19-36145.txt"                ,
"do-people-have-a-right-to-not-wear-a-mask-in-public-spaces-during-the-covid-19-pandemic-38770.txt",
  "do-people-have-a-right-to-not-wear-a-mask-in-public-spaces-during-the-covid-19-pandemic-38770.txt",
"do-we-need-a-vaccine-to-fight-the-covid-19-pandemic-38268.txt"                                    ,
  "do-we-need-a-vaccine-to-fight-the-covid-19-pandemic-38268.txt"                                    ,
"do-we-need-a-vaccine-to-fight-the-covid-19-pandemic-38268(1).txt"                                ,
  "do-we-need-a-vaccine-to-fight-the-covid-19-pandemic-38268(1).txt"                                ,
"education-will-never-be-the-same-as-it-was-before-covid-19-43590.txt"                            ,
  "education-will-never-be-the-same-as-it-was-before-covid-19-43590.txt"                            ,
"is-covid-19-more-dangerous-than-regular-flu-viruses-34602.txt"                                    ,
  "is-covid-19-more-dangerous-than-regular-flu-viruses-34602.txt"                                    ,
"is-herd-immunity-for-covid-19-achievable-39248.txt"                                              ,
  "is-herd-immunity-for-covid-19-achievable-39248.txt"                                              ,
"is-it-wrong-to-have-a-lockdown-for-covid-19-36981.txt"                                            ,
  "is-it-wrong-to-have-a-lockdown-for-covid-19-36981.txt"                                            ,
"should-a-global-curfew-be-introduced-to-stop-covid-19-34523.txt"                                  ,
  "should-a-global-curfew-be-introduced-to-stop-covid-19-34523.txt"                                  ,
"should-countries-have-closed-their-borders-to-china-to-reduce-the-spread-of-covid-19-33660.txt"  ,
  "should-countries-have-closed-their-borders-to-china-to-reduce-the-spread-of-covid-19-33660.txt"  ,
"should-covid-19-vaccines-be-mandatory-39517.txt"                                                  ,
  "should-covid-19-vaccines-be-mandatory-39517.txt"                                                  ,
"should-schools-close-during-the-covid-19-pandemic-44845.txt"                                      ,
  "should-schools-close-during-the-covid-19-pandemic-44845.txt"                                      ,
"should-vaccine-passports-be-mandatory-49452.txt"                                                  ,
  "should-vaccine-passports-be-mandatory-49452.txt"                                                  ,
"will-covid19-bring-lasting-environmental-changes-34939.txt"                                      ,
  "will-covid19-bring-lasting-environmental-changes-34939.txt"                                      ,
"will-the-covid-19-pandemic-have-a-lasting-impact-on-society-34267.txt"         
  "will-the-covid-19-pandemic-have-a-lasting-impact-on-society-34267.txt"         
)
)


Rivi 257: Rivi 257:


df <- preprocess_arguments(
df <- preprocess_arguments(
  file_path =  "7/74/Climate_discussions.zip",
file_path =  "7/74/Climate_discussions.zip",
  file_name = file_list_climate[43],
file_name = file_list_climate[43],
  relevants = NA,#relevants, # NA for all others except discussion #11 Should COVID-19 vaccines be mandatory?
relevants = NA,#relevants, # NA for all others except discussion #11 Should COVID-19 vaccines be mandatory?
  addition = NA,#addition,
addition = NA,#addition,
file_path =  "4/44/Covid-19_discussions.zip",
    file_path =  "4/44/Covid-19_discussions.zip",
file_name = "should-covid-19-vaccines-be-mandatory-39517.txt",
    file_name = "should-covid-19-vaccines-be-mandatory-39517.txt",
relevants = relevants,
    relevants = relevants,
addition = addition,
    addition = addition,
   truth_prior = 0.3,
   truth_prior = 0.3,
   truth_prior_with_reference = 0.7,
   truth_prior_with_reference = 0.7,

Versio 11. elokuuta 2021 kello 20.14




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

Perustelut

Data

Keskusteluja koronaviruksesta ja kovidista Kialo-alustalla, esim. Onko kovidipandemialla pysyviä vaikutuksia yhteiskuntaan?. Alla olevassa tiedostossa on 15 keskustelua aihepiiristä. Toisessa tiedostossa on Kialon ilmastokeskusteluja.

Näkemysverkko Kialon koronakeskustelusta

Argumentaatio koskien koronarokotusten pakollisuutta.

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 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).

Sensitiivisyys (se) on testin (B) herkkyys eli todennäköisyys saada positiivinen tulos jos asia (A) on totta: se = P(B|A) = a/(a+c). Mitä parempi herkkyys, sitä vähemmän vääriä negatiivisia.

Spesifisyys (sp) on testin (B) tarkkuus eli todennäköisyys saada negatiivinen tulos jos asia (A) ei ole totta: sp = 1-P(B|¬A-) = 1 - b/(b+d). Mitä parempi tarkkuus, sitä vähemmän vääriä positiivisia. Herkkyys ja tarkkuus ovat tärkeitä mittareita, koska ne eivät riipu itse asian A todennäköisyydestä.

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
se = a/(a+c) = 0.29/0.30 = 29/30

sp = b/(b+d) = 0.10/0.70 = 1/7

Mitä tietoja tarvitaan, jotta nelikenttä saadaan yksikäsitteisesti muodostettua? Jos tiedetään poikkisummat P(A) ja P(B), saadaan laskettua myös P(¬A) = 1-P(A) ja P(¬B) = 1-P(B). Yksiselitteisyyden saavuttamiseksi on tiedettävä vielä kolmas asia eli esimerkiksi P(B|A) eli herkkyys, joka kuvaa myös argumentin B relevanssia A:n suhteen eli kykyä muuttaa A:n posterioritodennäköisyyttä.

P(A) = a+c
P(B) = a+b
se = P(B|A) = a/(a+c) <=> a = se P(A), joten b = P(B) -se P(A)

Koska P(A|B) saadaan laskettua a/(a+b), matemaattinen määrittelyjoukko on 0 < P(A), P(B), se, a, b < 1 eli erityisesti 0 < P(B)-se P(A) < 1 eli (P(B)-1)/P(A) < se < P(B)/P(A). Koska P(B)<=1, alarajaehto ei tule koskaan vastaan vaan riittää, että se>0. Sen sijaan ylärajaehto voi hyvinkin olla <1 eli tulee joskus rajoittavaksi tekijäksi.

Argumentti on epärelevantti, jos P(A) = P(A|B) = a/(a+b) = se P(A)/P(B) eli se = P(B).

Jotta käyttäjän antamat parametrit olisivat aina määriteltyjä ja helppo ymmärtää, voitaisiin ottaa käyttöön seprime-parametri, joka saa arvoja välillä ]-1,1[, joka kattaa koko sensitiivisyyden määrittelyjoukon ja joka saa epärelevantin argumentin kohdalla arvon 0. Niinpä

se = P(B|A) = P(B) + seprime(B)(min(1,P(B)/P(A)) - P(B)), jos 0 <= seprime(B) < 1
se = P(B|A) = P(B) + seprime(B)P(B), jos -1 < seprime(B) < 0.

Kuitenkin meitä kiinnostaa relevanssiargumentin C vaikutus A:han B:n kautta. Koska P(B|A) riippuu A:sta, relevanssivaikutusta ei voida suoraan laskea C:n ja B:n tietojen avulla. Sen sijaan voidaan laskea seprime(B), jos ajatellaan seprime(C):n voimistavan tai heikentävän vaikutusta tietyn osuuden verran. Lisäksi C-argumentin todennäköisyys vaikuttaa siihen voimakkuuteen, jolla C muuttaa seprime(B):tä.

seprime(B|C) = seprime(B) + seprime(C) P(C)(1-seprime(B)), jos seprime(C)>=0
seprime(B|C) = seprime(B) + seprime(C) P(C) seprime(B), jos seprime(C)<0

Edellä sanottu pätee, jos seprime(B) >= 0, muussa tapauksessa pitää ensin laskea yhtälöt seprime(B):n itseisarvolla ja palauttaa negatiivinen etumerkki jälkikäteen. Tämä johtuu siitä, että argumenttiin B kohdistuvat argumentit voivat voimistaa tai heikentää sen relevanssia, mutta ne eivät voi vaihtaa hyökkäävää argumenttia puolustavaksi eikä päinvastoin.

Seprime-parametri voidaan yleistää tilanteeseen, jossa argumenttiin B kohdistuu useita relevanssiargumentteja Ci. Näiden keskinäinen laskentajärjestys ei saa vaikuttaa lopputulokseen, koska argumenteilla ei ole olemassa mitään mielekästä järjestystä. Seuraava yleistys on järjestyksestä riippumaton ja tuottaa melko selkeän laskenta-algoritmin:

seprime(B|Ci) = seprime(B) + (Σin seprime(Ci) P(Ci)) / n * (1-seprime(B)), jos Σin seprime(Ci) P(Ci)>=0
seprime(B|Ci) = seprime(B) + (Σin seprime(Ci) P(Ci)) / n * seprime(B), jos Σin seprime(Ci) P(Ci)<0

Argumentin vaikutus keskusteluun lasketaan käyttäen esimerkiksi seuraavia oletusarvoja (näiden toimivuutta on testattava käytännössä):

  • Argumentin herkkyys P(B|A) lasketaan relevanssitekijän (seprime) avulla: oletuksena 0.3 jos argumentti puolustaa ja -0.3 jos hyökkää
  • Argumenttien totuuden prioritodennäköisyys P(A) = 0.7 jos on uskottava viite, 0.3 jos viite puuttuu

Näiden avulla lasketaan argumentin posterioritodennäköisyys:

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

Eli yhteenvetona: A:n posteriori P(A|B) voidaan laskea joss tiedetään A:n priori P(A), B:n totuusarvo P(B) ja B:n relevanssi A:n suhteen seprime(B), josta johdetaan P(B|A). Ylävirran argumentti C vaikuttaa A:han epäsuorasti joko muuttamalla B:n relevanssia seprime-parametrin kautta (jos C on relevanssityyppiä) tai muuttamalla B:n totuusarvoa (P(B) (jos C on totuustyyppiä). Näin koko argumenttipuu saadaan laskettua ylhäältä alas.

Jos kuitenkin halutaan päivittää jonkin argumentin totuusarvoa, tilanne on johdonmukainen vain jos oletetaan, että joko

  1. alkuperäisillä todennäköisyyksillä seprime(B):stä laskettu P(B|A) säilyy tästä lähtien vakiona vaikka P(A) tai P(B) muuttuisivat (molempia tarvitaan, kun P(B|A) lasketaan seprime(B):stä, tai
  2. P(B|A) pitää laskea aina uudestaan seprime(B):stä todennäköisyyksien muuttuessa.

Tapauksessa (1) voidaan käyttää Bayes-verkon päivityssääntöjä ja päivittää kaikki todennäköisyydet lennosta joka suuntaan, kun jokin todennäköisyys lukitaan. Mutta tapauksessa (2) näin ei voida tehdä, vaan kaikki todennäköisyydet on laskettava uusiksi ylävirrasta alas seprime(B):n avulla.

Laskenta

Piirrä näkemysverkko koronakeskustelusta

+ Näytä koodi

Hae kirjanmerkit Firefoxista

+ Näytä koodi

Katso myös

Arkisto

  • Arkistoitu aiempi pohdinta perustuen mm. vedonlyöntisuhteisiin sekä totuus- ja relevanssifaktoreihin. Lisäksi käytettiin termistä P(B|A) nimeä sensitiivisyys, mikä on sinänsä oikein mutta ei ehkä hyödyllistä.