Ero sivun ”Koronavirus” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
 
(9 välissä olevaa versiota samalta käyttäjältä ei näytetä)
Rivi 3: Rivi 3:


== Perustelut ==
== Perustelut ==
=== Linkkejä ===
* [http://77.86.191.32/rtools_server/runs/covid_cases_cities.pdf Koviditapaukset kaupungeittain viikon keskiarvo]
* [http://77.86.191.32/rtools_server/runs/covid_cases_cities_daily.pdf Koviditapaukset kaupungeittain ja päivittäin]
* [http://77.86.191.32/rtools_server/runs/Sade-ennusteen_muutos.png Sade-ennusteen muutos (ei liity koronaan)]


=== Data ===
=== Data ===


Keskusteluja koronaviruksesta ja kovidista Kialo-alustalla, esim. [https://www.kialo.com/will-the-covid-19-pandemic-have-a-lasting-impact-on-society-34267 Onko kovidipandemialla pysyviä vaikutuksia yhteiskuntaan?]. Alla olevassa tiedostossa on 15 keskustelua aihepiiristä.
Keskusteluja koronaviruksesta ja kovidista Kialo-alustalla, esim. [https://www.kialo.com/will-the-covid-19-pandemic-have-a-lasting-impact-on-society-34267 Onko kovidipandemialla pysyviä vaikutuksia yhteiskuntaan?]. Alla olevassa tiedostossa on 15 keskustelua aihepiiristä. Toisessa tiedostossa on Kialon ilmastokeskusteluja.
 
{{#l:Covid-19_dicussions.zip}}


=== Laskenta ===
* {{#l:Covid-19_discussions.zip}}
* {{#l:climate_discussions.zip}}


==== Piirrä näkemysverkko Kialon koronakeskustelusta ====
=== Näkemysverkko Kialon koronakeskustelusta ===


[[File:Koronakideargumentaatio.png|600px|thumb|Argumentaatio koskien koronarokotusten pakollisuutta.]]Koronakide-hankkeeseen liittyen tehdään näkemysverkkoja koronarokotusten argumentaatiosta.
[[File:Koronakideargumentaatio.png|600px|thumb|Argumentaatio koskien koronarokotusten pakollisuutta.]]Koronakide-hankkeeseen liittyen tehdään näkemysverkkoja koronapolitiikan eri aiheiden 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
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
Rivi 22: Rivi 27:
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.
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 todennäköisyydestä.
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.
Esimerkkinä laskennasta on oheinen taulukko.
Rivi 38: Rivi 43:
  se = a/(a+c) = 0.29/0.30 = 29/30
  se = a/(a+c) = 0.29/0.30 = 29/30
   
   
  sp = b/(b+d) = 0.10/0.70 = 1/7
  sp = 1 - b/(b+d) = 1 - 0.6/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ä.
Bayesin kaavalla saadaan arvio P(A|B) päivitettyä, jos tiedetään priorit P(A) ja P(B) sekä ehdollinen todennäköisyys P(B|A) = se. Totuusarvot päivittyvät suoraan Bayes-verkon mukaisesti. Sen sijaan relevanssi vaatii erityiskäsittelyä.
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 B on irrelevantti joss P(B|A+) = P(B|A-) = P(B|A) eli a/(a+c) = b/(b+d) eli se + sp = 1. Niinpä relevanssi r voidaan määritellä sensitiivisyyden poikkeamaksi irrelevantista tilanteesta, eli r = (1 - sp) - se. Relevanssihyökkäykset k<sub>i</sub> puolestaan voidaan ajatella tekijöiksi, joiden takia r lähestyy nollaa eli hyökkäysten jälkeinen relevanssi r' on


Argumentti on epärelevantti, jos P(A) = P(A|B) = a/(a+b) = se P(A)/P(B) eli se = P(B).
r' = r &Pi;(1 - k<sub>i</sub>)
    = (1 - sp - se) &Pi;(1 - k<sub>i</sub>),


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ä
jossa k<sub>i</sub> ∈ [0, 1] saa sitä suurempia arvoja, mitä voimakkaampi hyökkäys relevanssia vastaan tehdään. Tämän kuvauksen hyvä puoli on, että irrelevanssipiste ei riipu A:n ja B:n todennäköisyyksistä ja että lopputulos ei riipu siitä, missä järjestyksessä relevanssihyökkäykset k<sub>i</sub> esitetään.


se = P(B|A) = P(B) + seprime(min(1,P(B)/P(A)) - P(B)), jos 0 <= seprime < 1
Jos taas halutaan esittää puolustava relevanssiargumentti, ei ole selvää, millä tavalla sensitiivisyyden tulisi muuttua. Niinpä tällä hetkellä ajatellaan, että puolustavan relevanssiargumentin yhteydessä pitää erikseen ilmoittaa, mikä kohdeargumentin sensitiivisyys on puolustuksen jälkeen. Tätä on vaikea automatisoida, joten tätä pitää opetella todellisten käyttäjätapausten kautta: millaisia keskusteluja tarvitaan, jotta käyttäjät voivat päätyä perusteltuihin päätelmiin relevanssin suuruudesta?
se = P(B|A) = P(B) + seprimeP(B), jos -1 < seprime < 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. C-argumentin todennäköisyys vaikuttaa siihen voimakkuuteen, jolla C muuttaa seprime(B):tä.
=== Laskenta ===
 
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 lisätä tai vähentää sen relevanssia, mutta ne eivät voi vaihtaa hyökkäävää argumenttia puolustavaksi eikä päinvastoin.
 
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)


Jos argumentti C on relevanssityyppiä, se vaikuttaa argumentin B relevanssiin muuttamalla tekijää se = P(B|A) epäsuorasti seprimen kautta
==== Piirrä näkemysverkko koronakeskustelusta ====


<rcode>
<rcode>
Rivi 78: Rivi 67:


# First version of data https://docs.google.com/spreadsheets/d/1Wzj_VqubkV6uomQS-St5UxzS5k25dDBs15DQFEsroOg/edit#gid=0
# First version of data https://docs.google.com/spreadsheets/d/1Wzj_VqubkV6uomQS-St5UxzS5k25dDBs15DQFEsroOg/edit#gid=0
# Relevant nodes for discussion 11 "COVID-19 vaccines should be mandatory"
#relevants <- gshe#et2tbl("https://docs.google.com/spreadsheets/d/1Wzj_VqubkV6uomQS-St5UxzS5k25dDBs15DQFEsroOg/edit#gid=0")
#relevants <- relevants$position[relevants$class=="relevance"]
#relevants <- gsub("\\.$","", relevants)
relevants <- c(
"1.2.1"          , "1.2.1.1"      ,  "1.2.1.1.1"      , "1.2.1.1.1.1"  ,  "1.2.1.5"        ,
"1.2.2.1"        , "1.2.2.1.2"    ,  "1.2.2.2"        , "1.2.2.2.1"    ,  "1.2.3.1"        ,
"1.2.4"          , "1.2.4.2.1"    ,  "1.2.4.4"        , "1.2.5.1.1.1"  ,  "1.2.5.2"        ,
"1.2.5.2.1"      , "1.2.5.2.1.2"  ,  "1.2.5.2.2"      , "1.2.5.2.4.5"  ,  "1.2.5.3"        ,
"1.2.5.3.1"      , "1.2.5.3.2"    ,  "1.2.5.3.3"      , "1.2.5.3.4"    ,  "1.2.5.3.4.1.1"  ,
"1.2.5.4"        , "1.2.6"        ,  "1.2.7"          , "1.2.7.1"      ,  "1.2.7.1.1"      ,
"1.2.7.3"        , "1.2.7.4"      ,  "1.2.7.5"        , "1.2.7.5.1.1"  ,  "1.2.8.2"        ,
"1.2.8.3"        , "1.3.2.2"      ,  "1.3.4"          , "1.4.1.1.1.2"  ,  "1.4.1.1.1.4"    ,
"1.4.1.1.2"      , "1.4.1.3"      ,  "1.4.1.3.3.1"    , "1.4.1.3.3.2"  ,  "1.4.1.3.4.1"    ,
"1.4.1.3.4.2"    , "1.4.1.3.4.3"  ,  "1.4.1.4.2.1"    , "1.4.2"        ,  "1.4.2.1"        ,
"1.4.2.2"        , "1.4.2.3"      ,  "1.4.2.3.1"      , "1.4.2.4"      ,  "1.4.2.5"        ,
"1.4.3"          , "1.4.4.1"      ,  "1.5.1"          , "1.5.1.2"      ,  "1.5.2"          ,
"1.5.2.1.1"      , "1.5.2.1.2"    ,  "1.5.2.1.2.1"    , "1.5.2.1.3.1"  ,  "1.5.2.1.4"      ,
"1.5.2.1.4.3.1"  , "1.5.2.1.4.4"  ,  "1.5.2.3"        , "1.5.2.3.1"    ,  "1.5.3"          ,
"1.5.4"          , "1.5.4.1"      ,  "1.5.4.1.2"      , "1.5.4.3.1"    ,  "1.5.4.3.2"      ,
"1.5.4.3.3"      , "1.5.4.3.4"    ,  "1.5.5.1"        , "1.5.6"        ,  "1.5.6.2"        ,
"1.5.6.2.1"      , "1.5.6.4"      ,  "1.5.6.5.4"      , "1.5.6.5.4.3"  ,  "1.6.1.1"        ,
"1.6.1.5"        , "1.6.2"        ,  "1.6.2.2.2"      , "1.6.2.3.2"    ,  "1.6.2.3.2.2.1"  ,
"1.6.2.3.2.3"    , "1.6.2.3.3"    ,  "1.6.2.3.4"      , "1.6.2.3.4.1.2.1", "1.6.2.3.4.1.3"  ,
"1.6.2.3.4.3"    , "1.6.2.3.5"    ,  "1.6.2.3.5.1.1"  , "1.6.2.3.5.2"  ,  "1.6.2.3.6"      ,
"1.6.2.3.6.2.1"  , "1.6.3"        ,  "1.6.3.1.2.2"    , "1.6.3.2.1"    ,  "1.6.4"          ,
"1.6.4.3"        , "1.6.4.4"      ,  "1.6.5"          , "1.6.6"        ,  "1.6.7"          ,
"1.6.7.1.5"      , "1.6.7.2.1"    ,  "1.6.7.2.1.1"    , "1.6.7.2.2.1"  ,  "1.6.7.2.2.2"    ,
"1.6.7.2.2.3"    , "1.6.7.2.3"    ,  "1.6.7.2.5"      , "1.6.7.2.6.2"  ,  "1.6.7.2.7"      ,
"1.6.7.3.1"      , "1.6.7.3.2.1"  ,  "1.7.1.1.2"      , "1.7.1.2.1"    ,  "1.7.1.3"        ,
"1.7.2"          , "1.7.3.1"      ,  "1.7.3.2"        , "1.7.4"        ,  "1.7.5"          ,
"1.7.5.2.2"      , "1.7.5.4"      ,  "1.7.6.1.1"      , "1.7.6.2.1.1"  ,  "1.7.7.1.1.2.1.1",
"1.7.7.1.1.2.1.3", "1.7.7.1.5"    ,  "1.7.7.1.5.1.1"  , "1.7.7.1.5.2"  ,  "1.7.7.2"        ,
"1.7.7.2.2"      , "1.7.7.2.2.1"  ,  "1.7.7.2.2.2"    , "1.7.7.4.1"    ,  "1.7.7.4.2.1.1"  ,
"1.7.7.4.2.2"    , "1.7.7.4.4"   
)


objects.latest("Op_en3861", code_name="makeGraph2") # [[Insight network]] makeGraph
objects.latest("Op_en3861", code_name="makeGraph2") # [[Insight network]] makeGraph
Rivi 120: Rivi 72:


preprocess_arguments <- function(
preprocess_arguments <- function(
   FILE_PATH, # Name of zip file at Opasnet
   file_path, # Name of zip file at Opasnet
   file_list, # List of filenames in the zip file
   wiki = "opasnet_fi", # Wiki identifier
   n, # Number of file to pick for argument analysis
  file_name, # Name of file in the zip file
   TRUTH_PRIOR = 0.3, # prior truth value without other information
   relevants = NA, # vector of Items for relevance arguments
   TRUTH_PRIOR_WITH_REFERENCE = 0.7, # prior truth value with credible reference
  addition = NA, # vector of arguments to be added to original list.
   SENSITIVITY_PRIME = 0.3, # sensitivity defend value without other information
   truth_prior = 0.3, # prior truth value without other information
   SENSITIVITY_PRIME_ATTACK = -0.5 # sensitivity attack value without other information
   truth_prior_with_reference = 0.7, # prior truth value with credible reference
   sensitivity_prime = 0.3, # sensitivity defend value without other information
   sensitivity_prime_attack = -0.5 # sensitivity attack value without other information
) {
) {
   dfl <- opasnet.data(FILE_PATH, "opasnet_fi", unzip=file_list[n])
   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 <- strsplit(dfl, "\n")[[1]]
   dfl <- strsplit(dfl, "\n")[[1]]
   df_title <- gsub("Discussion Title: ", "", dfl[1])
   df_title <- gsub("Discussion Title: ", "", dfl[1])
   dfl <- dfl[-(1:2)]
   dfl <- dfl[-(1:2)]
  if(!any(is.na(addition))) dfl <- c(dfl, addition)
   df <- data.frame(level = regexpr("\\. ",dfl))
   df <- data.frame(level = regexpr("\\. ",dfl))
   df$Item = substr(dfl,1,df$level-1)
   df$Item = substr(dfl,1,df$level-1)
   df$colour = toupper(substr(dfl,df$level+2,df$level+4))
   df$class = substr(dfl,df$level+6,regexpr(":", dfl)-1)
   df$colour[1] <- "Value"
  df$colour <- substr(dfl,df$level+2, df$level+4)
   df$text = substr(dfl,ifelse(df$level==2,4,df$level+7),999)
   df$colour <- ifelse(df$colour %in% c("Pro","Con"), df$colour, "Thesis")
   df$text = substr(dfl, ifelse(df$colour=="Thesis",regexpr("\\. ",dfl), regexpr(":",dfl))+2,999)
   df$level <- nchar(gsub("[0-9]","", df$Item))
   df$level <- nchar(gsub("[0-9]","", df$Item))
  added_argument <- unlist(lapply(strsplit(df$Item,split="\\."), FUN=function(x) max(as.numeric(x))))
  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)
   if(!"class" %in% colnames(df)) df$class <- "truth"
  df$class <- ifelse(df$class=="", "truth", df$class)
   df$class[1] <- "fact"
  df$class <- ifelse(df$colour=="Thesis", "fact", df$class)
   if(!any(is.na(relevants))) df$class[df$Item %in% relevants] <- "relevance"
  df$alias <- ifelse(grepl("^-> See", df$text), gsub("\\.$", "", substr(df$text,8,999)), "")
   df$alias[grepl("discussion",df$alias)] <- ""
    
    
   return(list(df_title, df))
   return(list(df_title, df))
Rivi 155: Rivi 117:
   verbose=FALSE
   verbose=FALSE
) {
) {
   df$edge.penwidth <- abs(df$seprime*15)
  thesis <- df$colour=="Thesis"
   df$node.width <- df$truth
   df$edge.penwidth <- abs(df$relevance*15)
   df$node.fontsize <- df$truth*20
   df$node.width <- ifelse(thesis,1,df$truth)
   df$node.fontsize <- ifelse(thesis,15,df$truth*20)
   df$node.color <- ifelse(df$class=="truth","orange","blue")
   df$node.color <- ifelse(df$class=="truth","orange","blue")
   df$Context <- "Koronakide"
   df$Context <- "Koronakide"
   df$label <- substr(df$text, 1,30)
   df$label <- substr(df$text, 1,30)
  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 185: Rivi 149:
   }
   }
   if(drop_gray) df <- df[df$node.fillcolor!="gray" | df$Item %in% drop ,]
   if(drop_gray) df <- df[df$node.fillcolor!="gray" | df$Item %in% drop ,]
   if(drop_higher_levels>0) df <- df[df$level<drop_higher_levels,]
   if(drop_higher_levels>0) df <- df[df$level<=drop_higher_levels | df$level>10,]
   return(df)
   return(df)
}
}
Rivi 196: Rivi 160:
}
}


file_list <- 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"         
)
 
file_list_climate <- c(
  "a-carbon-tax-should-be-implemented-to-subsidize-the-reduction-of-consumers-carbon-footprint-25338.txt"                        ,
  "all-humans-should-be-vegan-2762.txt"                                                                                          ,
  "are-battery-electric-vehicles-better-than-hydrogen-fuel-cell-vehicles-2710.txt"                                              ,
  "are-the-milankovitch-cycles-major-causes-of-climate-change-14194.txt"                                                        ,
  "are-the-rich-or-the-poor-more-responsible-for-environmental-damages-10248.txt"                                                ,
  "climate_discussions.zip"                                                                                                      ,
  "deep-sea-oil-and-gas-exploration-in-the-great-australian-bight-should-be-banned-15489.txt"                                    ,
  "do-we-need-nuclear-power-for-sustainable-energy-production-6182.txt"                                                          ,
  "do-wind-farms-have-more-advantages-than-disadvantages-9620.txt"                                                              ,
  "is-carpooling-the-way-of-the-future-18711.txt"                                                                                ,
  "is-climate-crisis-inevitable-31239.txt"                                                                                      ,
  "is-having-children-a-bad-idea-in-todays-times-13236.txt"                                                                      ,
  "is-it-appropriate-for-the-epa-to-declare-biomass-to-be-carbon-neutral-14080.txt"                                              ,
  "is-it-reasonable-to-create-a-directly-democratic-and-all-inclusive-internet-based-forum-to-address-global-issues-43718.txt"  ,
  "is-low-energy-nuclear-reaction-lenr-technology-the-solution-to-fossil-fuel-burning-30393.txt"                                ,
  "is-organic-farming-better-than-conventional-farming-9613.txt"                                                                ,
  "is-the-united-nations-the-best-forum-to-tackle-climate-change-27811.txt"                                                      ,
  "no-one-should-feel-obliged-to-change-their-lifestyle-to-combat-global-warming-30084.txt"                                      ,
  "periodic-lockdowns-should-be-planned-as-emergency-measures-to-fight-climate-change-36808.txt"                                ,
  "recycling-works-30534.txt"                                                                                                    ,
  "should-fracking-be-banned-7587.txt"                                                                                          ,
  "should-governments-push-to-implement-100%-renewable-energy-3871.txt"                                                          ,
  "should-governments-subsidize-ethanol-10385.txt"                                                                              ,
  "should-humans-act-to-fight-climate-change-4540.txt"                                                                          ,
  "should-nuclear-energy-replace-fossil-fuels-9326.txt"                                                                          ,
  "should-people-go-vegan-if-they-can-31640.txt"                                                                                ,
  "should-private-cars-be-forbidden-in-large-cities-9351.txt"                                                                    ,
  "should-public-transport-be-free-33112.txt"                                                                                    ,
  "should-renewable-energy-sources-replace-fossil-fuels-15900.txt"                                                              ,
  "should-the-ecological-crisis-we-are-facing-become-our-collective-and-singular-focus-3185.txt"                                ,
  "should-the-eu-introduce-a-carbon-tax-29370.txt"                                                                              ,
  "should-the-us-government-commit-to-a-green-new-deal-30325.txt"                                                                ,
  "should-the-us-have-pulled-out-of-the-paris-climate-agreement-15487.txt"                                                      ,
  "should-there-be-one-singular-global-governmententity-31213.txt"                                                              ,
  "the-earth-will-not-be-irreparable-in-12-years-from-climate-change-32101.txt"                                                  ,
  "the-fight-of-western-countries-against-climate-change-is-hypocritical-31852.txt"                                              ,
  "the-us-should-adopt-a-carbon-fee-and-dividend-plan-to-address-the-primary-cause-of-climate-change-30792.txt"  ,
  "the-world-needs-an-international-environmental-government-that-has-political-power-to-mitigate-environmental-damage-45042.txt",
  "there-should-be-further-research-on-solar-geoengineering-16729.txt"                                                          ,
  "universities-should-divest-from-fossil-fuels-28142.txt"                                                                      ,
  "vertical-farming-is-the-future-of-agriculture-7487.txt"                                                                      ,
  "we-should-adapt-to-climate-change-rather-than-advert-it-31679.txt"                                                            ,
  "what-is-the-best-measure-to-decrease-climate-change-31294.txt"                                                                ,
  "what-is-the-worst-world-problem-of-the-utmost-concern-9143.txt"                                                              ,
  "will-man-made-climate-change-cause-human-extinction-31221.txt"
)
)
relevants <- opasnet.data("4/44/Covid-19_discussions.zip", wiki="op_fi", unzip="should-covid-19-vaccines-be-mandatory-39517_relevants.txt")
relevants <- strsplit(relevants, split="\n")[[1]]
addition <- opasnet.data("4/44/Covid-19_discussions.zip", wiki="op_fi", unzip="should-covid-19-vaccines-be-mandatory-39517_addition.txt")
addition <- strsplit(addition, split="\n")[[1]]


df <- preprocess_arguments(
df <- preprocess_arguments(
  FILE_PATH =  "e/eb/Covid-19_dicussions.zip", # "~/discussion/corona/"
#  file_path =  "7/74/Climate_discussions.zip",
  file_list = file_list,
#  file_name = file_list_climate[43],
  n=11,
#  relevants = NA,#relevants, # NA for all others except discussion #11 Should COVID-19 vaccines be mandatory?
   TRUTH_PRIOR = 0.3,
#  addition = NA,#addition,
   TRUTH_PRIOR_WITH_REFERENCE = 0.7,
    file_path =  "4/44/Covid-19_discussions.zip",
   SENSITIVITY_PRIME = 0.3,
    file_name = "should-covid-19-vaccines-be-mandatory-39517.txt",
   SENSITIVITY_PRIME_ATTACK = -0.5
    relevants = relevants,
    addition = addition,
   truth_prior = 0.3,
   truth_prior_with_reference = 0.7,
   sensitivity_prime = 0.3,
   sensitivity_prime_attack = -0.5
)
)


if(df[[1]]=="Should COVID-19 Vaccines be Mandatory?") {
  df[[2]]$class[df[[2]]$Item %in% relevants] <- "relevance"
}
gr <- makeGraph(
gr <- makeGraph(
   ova=prepare_graph(
   ova=prepare_graph(
     df=infer_tree(df[[2]], verbose=TRUE),
     df=infer_tree(df[[2]], verbose=FALSE),
     drop_gray = TRUE,
     drop_gray = TRUE,
     drop_higher_levels = 0,
     drop_higher_levels = 2,
     TRUTH_LIMIT = 0.1,
     TRUTH_LIMIT = 0.1,
     RELEVANCE_LIMIT = 0.2,
     RELEVANCE_LIMIT = 0.2,
Rivi 245: Rivi 264:


#df_default <- infer_tree(df)
#df_default <- infer_tree(df)
#df_no_relevance <- infer_tree(df %>% mutate(class="truth"), SENSITIVITY_PRIME, TRUTH_PRIOR)
#df_no_relevance <- infer_tree(df %>% mutate(class="truth"), sensitivity_prime, truth_prior)
#plot(df_default$truth, df_no_relevance$truth)
#plot(df_default$truth, df_no_relevance$truth)
# The correlation between inference with truth/relevance classification and that without is not great.
# The correlation between inference with truth/relevance classification and that without is not great.
Rivi 273: Rivi 292:
== Katso myös ==
== Katso myös ==


* Aiempi versio, jossa käytettiin relevanssitekijää ja oletettiin ettei spesifisyyttä tiedetä. [http://fi.opasnet.org/fi-opwiki/index.php?title=Koronavirus&oldid=36880#N.C3.A4kemysverkko_Kialon_koronakeskustelusta]
* A Global collection of open source projcts during COVID-19 [http://open-source-covid-19.weileizeng.com/]
* A Global collection of open source projcts during COVID-19 [http://open-source-covid-19.weileizeng.com/]
* Annu Haho, Marja Tiirola. Sammutammeko koronakriisiä oikeilla välineillä? Suojaa-testaa-jäljitä-eristä-hoida! Miten? [https://www.suolistoblogi.com/446264861]
* Annu Haho, Marja Tiirola. Sammutammeko koronakriisiä oikeilla välineillä? Suojaa-testaa-jäljitä-eristä-hoida! Miten? [https://www.suolistoblogi.com/446264861]

Nykyinen versio 1. elokuuta 2022 kello 09.33




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

Perustelut

Linkkejä

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 koronapolitiikan eri aiheiden 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 = 1 - b/(b+d) = 1 - 0.6/0.70 = 1/7

Bayesin kaavalla saadaan arvio P(A|B) päivitettyä, jos tiedetään priorit P(A) ja P(B) sekä ehdollinen todennäköisyys P(B|A) = se. Totuusarvot päivittyvät suoraan Bayes-verkon mukaisesti. Sen sijaan relevanssi vaatii erityiskäsittelyä.

Argumentti B on irrelevantti joss P(B|A+) = P(B|A-) = P(B|A) eli a/(a+c) = b/(b+d) eli se + sp = 1. Niinpä relevanssi r voidaan määritellä sensitiivisyyden poikkeamaksi irrelevantista tilanteesta, eli r = (1 - sp) - se. Relevanssihyökkäykset ki puolestaan voidaan ajatella tekijöiksi, joiden takia r lähestyy nollaa eli hyökkäysten jälkeinen relevanssi r' on

r' = r Π(1 - ki)
   = (1 - sp - se) Π(1 - ki),

jossa ki ∈ [0, 1] saa sitä suurempia arvoja, mitä voimakkaampi hyökkäys relevanssia vastaan tehdään. Tämän kuvauksen hyvä puoli on, että irrelevanssipiste ei riipu A:n ja B:n todennäköisyyksistä ja että lopputulos ei riipu siitä, missä järjestyksessä relevanssihyökkäykset ki esitetään.

Jos taas halutaan esittää puolustava relevanssiargumentti, ei ole selvää, millä tavalla sensitiivisyyden tulisi muuttua. Niinpä tällä hetkellä ajatellaan, että puolustavan relevanssiargumentin yhteydessä pitää erikseen ilmoittaa, mikä kohdeargumentin sensitiivisyys on puolustuksen jälkeen. Tätä on vaikea automatisoida, joten tätä pitää opetella todellisten käyttäjätapausten kautta: millaisia keskusteluja tarvitaan, jotta käyttäjät voivat päätyä perusteltuihin päätelmiin relevanssin suuruudesta?

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