Ero sivun ”Kotimaisen kalan edistämisohjelma” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
(ensimmäinen luonnos sisältäen arviot kalansyönnin kokonaismuutoksista)
 
 
(16 välissä olevaa versiota samalta käyttäjältä ei näytetä)
Rivi 33: Rivi 33:
=== Tulokset ===
=== Tulokset ===


:''Arviointimallin keskeiset tulokset.
[[File:Kotimaisen kalan edistämisen terveysvaikusus.png|500px|thumb|Tautitaakka erilaisissa kalankulutuksen skenaarioissa. Negatiivinen luku tarkoittaa terveyshyötyä.]]
'''Arviointimallin keskeiset tulokset löytyvät [https://drive.google.com/open?id=1FcCOLxOmtIs3unvVFUZPARuJYdYflqWZ tästä HTML-tiedostosta].


=== Päätelmät ===
=== Päätelmät ===


:''Vastaus arvioinnin pääkysymykseen ja muihin kysymyksiin tulosten perusteella.
Kalansyönti vuonna 2017 vähensi tautitaakkaa n. 100 000 haittapainotettua elinvuotta (DALY) Suomessa. Jos kalansyönti lisääntyisi oheisen taulukon mukaisesti, tautitaakka vähenisi edelleen n. 40 000 DALY /a suomalaista kalankulutusta lisäämällä ja n. 35 000 DALY /a kalantuontia lisäämällä.


== Perustelut ==
== Perustelut ==
Rivi 71: Rivi 72:
* Kalansyönnin edistämistä suunnataan tietyille väestöryhmille, ja vaikutukset tulevat siellä (mihin?).
* Kalansyönnin edistämistä suunnataan tietyille väestöryhmille, ja vaikutukset tulevat siellä (mihin?).
* Vaikutukset jakautuvat satunnaisessa määrin eri yksilöille.
* Vaikutukset jakautuvat satunnaisessa määrin eri yksilöille.
==== Malliparametrit ====
Malliparametrit saat näkyviin klikkaamalla.
{{piilotettu|
Kalankulutus on ilmoitettu fileepainona eikä tuorepainona, eli oletetaan että kaikki tämä tulee syödyksi.
<t2b name="Malliparametrit" index="Response,Exposure_agent,Type,Subgroup,Unit" obs="Result" desc="Description" unit="various">
||amount|Kala:Kirjolohi; Scenario: BAU|Gg /a|6.7|KKE-skenaario
||amount|Kala:Kasvatettu; Scenario: BAU|Gg /a|0.6|KKE-skenaario
||amount|Kala:Silakka; Scenario: BAU|Gg /a|1.6|KKE-skenaario
||amount|Kala:Kaupallinen; Scenario: BAU|Gg /a|3.2|KKE-skenaario
||amount|Kala:Vapaa-ajan; Scenario: BAU|Gg /a|9.9|KKE-skenaario
||amount|Kala:Tuontilohi; Scenario: BAU|Gg /a|23.6|KKE-skenaario
||amount|Kala:Tuontikirjolohi; Scenario: BAU|Gg /a|4.8|KKE-skenaario
||amount|Kala:Muu tuonti; Scenario: BAU|Gg /a|28|KKE-skenaario
||amount|Kala:Kirjolohi; Scenario: Kotimaa|Gg /a|19|KKE-skenaario
||amount|Kala:Kasvatettu; Scenario: Kotimaa|Gg /a|5|KKE-skenaario
||amount|Kala:Silakka; Scenario: Kotimaa|Gg /a|8|KKE-skenaario
||amount|Kala:Kaupallinen; Scenario: Kotimaa|Gg /a|7|KKE-skenaario
||amount|Kala:Vapaa-ajan; Scenario: Kotimaa|Gg /a|10|KKE-skenaario
||amount|Kala:Tuontilohi; Scenario: Kotimaa|Gg /a|32|KKE-skenaario
||amount|Kala:Tuontikirjolohi; Scenario: Kotimaa|Gg /a|5|KKE-skenaario
||amount|Kala:Muu tuonti; Scenario: Kotimaa|Gg /a|28|KKE-skenaario
||amount|Kala:Kirjolohi; Scenario: Tuonti|Gg /a|6.7|KKE-skenaario
||amount|Kala:Kasvatettu; Scenario: Tuonti|Gg /a|2|KKE-skenaario
||amount|Kala:Silakka; Scenario: Tuonti|Gg /a|3|KKE-skenaario
||amount|Kala:Kaupallinen; Scenario: Tuonti|Gg /a|4|KKE-skenaario
||amount|Kala:Vapaa-ajan; Scenario: Tuonti|Gg /a|10|KKE-skenaario
||amount|Kala:Tuontilohi; Scenario: Tuonti|Gg /a|44|KKE-skenaario
||amount|Kala:Tuontikirjolohi; Scenario: Tuonti|Gg /a|10|KKE-skenaario
||amount|Kala:Muu tuonti; Scenario: Tuonti|Gg /a|28|KKE-skenaario
CHD death||BoD|Age:Female 25-69|DALY|9876 (9103 - 10784)|Z:\Projects\RUORI\tautitaakka\Rasvat\IHD_data_IHME.csv
CHD death||BoD|Age:Male 25-69|DALY|48851 (54035 - 46123)|Z:\Projects\RUORI\tautitaakka\Rasvat\IHD_data_IHME.csv
CHD death||BoD|Age:Age 25-69|DALY|58727 (63138 - 56907)|Summed from previous
CHD death||BoD|Age:Female 70+|DALY|42750 (41007 - 45909)|Z:\Projects\RUORI\tautitaakka\Rasvat\IHD_data_IHME.csv
CHD death||BoD|Age:Male 70+|DALY|48150 (46327 - 51255)|Z:\Projects\RUORI\tautitaakka\Rasvat\IHD_data_IHME.csv
CHD death||BoD|Age:Age 70+|DALY|90900 (87334 - 97164)|Summed from previous
IQ loss||case burden||DALY /IQ|0.11 (0.06 - 0.16)|Arja used 0.013 but here we use Goherr value instead
Cancer morbidity||case burden||DALY/case|0 - 0.28|Goherr assessment
Cancer morbidity||case burden||DALY/case|0 - 0.28|Goherr assessment
Sperm concentration||case burden||DALY/case|0 - 5|Goherr assessment
Yes or no dental defect||case burden||DALY/case|0 - 0.12|Goherr assessment
CHD2 mortality||case burden||DALY /case|5 - 15|Goherr assessment
Stroke mortality||case burden||DALY /case|5 - 15|Goherr assessment
Yes or no dental defect||case burden||DALY /case|0 - 0.12|Goherr assessment
Cancer morbidity||case burden||DALY /case|0.3937391 (0.3566650 - 0.4356150)|Goherr assessment
Vitamin D recommendation||case burden||DALY /case|0.0001 - 0.0101|Goherr assessment
Sperm concentration||case burden||DALY /case|0 - 5|Goherr assessment
Loss in child's IQ points||case burden||DALY /case|0.11 (0.06 - 0.16)|Goherr assessment
|TEQ|exposure|Exposure:To child; Age: Age 1|pg /g|1.65 (0.38 - 3.47)|Ruori code; data from Goherr assessment
|TEQ|exposure|Exposure:To eater; Age: Female 18-45|pg /d|4.79 (1.07 - 11.48)|Ruori code; data from Goherr assessment
|TEQ|exposure|Exposure:To eater; Age: Non female 18-45|pg /d|22.61 (9.43 - 44.75)|Ruori code; data from Goherr assessment
|TEQ|frexposed|Age:Age 1|fraction|1|frexposed is already in the exposure distribution
|TEQ|frexposed|Age:Female 18-45|fraction|1|frexposed is already in the exposure distribution
|TEQ|frexposed|Age:Non female 18-45|fraction|1|frexposed is already in the exposure distribution
IQ loss||incidence|Age:Age 1|IQ /100000py|596000|On average, a population has ca. 6 IQ points per person below 100: mean(abs(rnorm(10000, 100,15)-100))/2
Cancer morbidity||incidence|Age:Female 18-45|# /100000py|657|Statistics Finland https://tilastot.syoparekisteri.fi/syovat/ applies to all subgroups because cancer is lifetime risk
Cancer morbidity||incidence|Age:Non female 18-45|# /100000py|657|Statistics Finland https://tilastot.syoparekisteri.fi/syovat/ applies to all subgroups because cancer is lifetime risk
Sperm concentration||incidence|Age:Age 1|# /100000py|7000|Male infertility rate is 7 % (Wikipedia)
Yes or no dental defect||incidence|Age:Age 1|# /100000py|22400|Alaluusua et al 2004 found 11/49 cases in two lowest groups
||population|Age:Age 1||50934|Statistics Finland, 2018 https://pxnet2.stat.fi:443/PXWeb/sq/ac3373d0-e303-4c67-b32a-73c6d26df809
||population|Age:Age 25-64|#|2814305|Statistics Finland
||population|Age:Age 65-74|#|692868|Statistics Finland
||population|Age:Age 25-69|#|3176513|Statistics Finland
||population|Age:Age 70+|#|842629|Statistics Finland
||population|Age:Total population|#|5517919|Statistics Finland
||population|Age:Age 0 (congenital)|#|47663|Statistics Finland
||population|Age:Age 1+ (acquired)|#|5470256|Statistics Finland
||population|Age:Female 18-45|#|923697|Statistics Finland
||population|Age:Non female 18-45|#|4594222|Statistics Finland
</t2b>
<t2b name="Decisions" index="Decision,Option,Variable,Cell,Change" obs="Result" desc="Description" unit="-">
Adjust|BAU|incidence||Multiply|0.00001|1/100000 py --> 1 py
Adjust|BAU|conc_vit|Nutrient:Vitamin D,Omega3,ALA,DHA|Multiply|0.01|g /100 g --> g /g
Adjust|BAU|conc_vit|Nutrient:Omega3|Multiply|1000|g --> mg
</t2b>
<t2b name="CollapseMarginals" index="Variable,Index,Probs,Function" obs="Dummy" desc="Description" unit="-">
BoD|incidenceSource,disabilityweightSource,populationSource,BoDSource||sum|1|Remove redundant
PAF|Unit, Exposure, Scaling,Exposcen, ER_function, ERFchoiceSource, exposureSource, bgexposureSource, BWSource, doseSource, thresholdSource, ERFSource, RRSource, frexposedSource, incidenceSource, InpPAFSource||sum|1|Remove redundant
case_burden|case_burdenSource||sum|1|Fill missing Ages
BoDattr|PAFSource, Adjust||sum|1|Remove redundant
expo_indir|f_ingSource, t0.5Source,f_mtocSource, BFSource||sum|1|Remove redundant
exposure|Fish, Kala||sum|1|Remove redundant
dose|Source, concSource, expo_dirSrouce, exposureSource, BWSource, Source.1||sum|1|Remove redundant
ERF|Exposure, Age||sum|1|Remove redundant
threshold|Exposure, Age||sum|1|Remove redundant
</t2b>
}}
Scenario|Action|exposure|Exposure: To child; Age: Age 1|Replace|0.98 (0.17 - 2.9)|Based on RUORI modelling (see code)
Scenario|Action|exposure|Exposure: To eater; Age: Female 18-45|Replace|2.79 (0.56 - 7.08)|Based on RUORI modelling (see code)
Scenario|Action|exposure|Exposure: To eater; Age: Non female 18-45|Replace|11.38 (3.44 - 46.22)|Based on RUORI modelling (see code)
=== Laskenta ===
Avoimen arvioinnin mallikoodi on kirjoitettu R:llä ja se löytyy [https://github.com/jtuomist/fishhealth Githubista].
[[image:Terveysvaikutusten arviointimalli.svg|thumb|400px|Yleiskuva terveysvaikutusten laskentamallista.]]
==== Keskeiset tulosteet ====
<rcode label="Laske uudestaan mallin perustulokset" graphics=1>
# This is code Op_fi5923/ on page [[Ruori]]
library(OpasnetUtils)
library(ggplot2)
library(thlGraphs)
library(plotly)
openv.setN(10)
objects.latest("Op_fi5923", code_name="model")
# First empty all objects for a fresh start. Otherwise may be problems with CheckDecisions.
oempty(all=TRUE)
InpBoD <- EvalOutput(InpBoD)
InpPAF <- EvalOutput(InpPAF)
utility <- EvalOutput(utility, verbose=TRUE)
# Sample from default and sensitivity scenario about lead threshold.
cat("Elintarvikeperäisen lyijyn vaikutukset herkkyystarkastelussa.\n")
oprint(summary(BoDattr[BoDattr$Exposure_agent=="Lyijy",]))
BoDattr <- CollapseMarginal(BoDattr,"Threshold","sample")
utility <- CollapseMarginal(utility,"Threshold","sample")
levels(BoDattr$Exposure_agent)[levels(BoDattr$Exposure_agent)=="Vihannesvaje"] <- "Kasvisvaje"
#levels(BoDattr$Response)
#[1] "Cancer morbidity"        "IQ loss"                "Listeriosis"            "Liver cancer"         
#[5] "Noro infection"          "Sperm concentration"    "Toxoplasmosis"          "Yes or no dental defect"
#[9] "CHD death"              "Diet high in sodium"    "Diet low in fruits"      "Diet low in vegetables"
levels(BoDattr$Response) <- c(
  "Syöpä",
  "Älykkyysosamäärän lasku",
  "Listerioosi",
  "Maksasyöpä",
  "Noroinfektio",
  "Miehen hedelmättömyys",
  "Toksoplasmoosi",
  "Hammasvaurio",
  "Sydäntauti",
  "Liika suola",
  "Hedelmävaje",
  "Kasvisvaje"
)
cat("Elintarvikeperäisiä tautitaakkoja Suomessa arpoen lyijylle oletetun tai matalamman kynnysarvon.\n")
tmp <- summary(oapply(BoDattr[BoDattr$Scenario=="BAU",],NULL,sum,c("Age","Response")))
oprint(data.frame(
  Altiste = tmp$Exposure_agent,
  Keskiarvo = signif(tmp$mean,2),
  "95 luottamusväli" = paste0(signif(tmp$Q0.025,2)," - ", signif(tmp$Q0.975,2)),
  Keskihajonta = signif(tmp$sd,2)
)[rev(match(lev, tmp$Exposure_agent)),])
cat("Elintarvikeperäisiä tautitaakkoja Suomessa ikä- ja tautiryhmittäin arpoen lyijylle oletetun tai matalamman kynnysarvon.\n")
tmp <- summary(BoDattr[BoDattr$Scenario=="BAU",])
oprint(data.frame(
  Altiste = tmp$Exposure_agent,
  Ikä = tmp$Age,
  Vaste = tmp$Response,
  Keskiarvo = signif(tmp$mean,2),
  Mediaani = signif(tmp$median,2),
  "95 luottamusväli" = paste0(signif(tmp$Q0.025,2)," - ", signif(tmp$Q0.975,2)),
  Keskihajonta = signif(tmp$sd,2)
))
cat("Ruori-skenaarioiden vaikutus tautitaakkaan\n")
tmp <- summary(utility)
oprint(data.frame(
  Altiste = tmp$Exposure_agent,
  Keskiarvo = signif(tmp$mean,2),
  "95 luottamusväli" = paste0(signif(tmp$Q0.025,2)," - ", signif(tmp$Q0.975,2)),
  Keskihajonta = signif(tmp$sd,2)
)[rev(match(lev, tmp$Exposure_agent)),])
dodge <- position_dodge(width=0.7)
if(FALSE) {
 
  gg <-  ggplot(summary(oapply(BoDattr[BoDattr$Scenario=="BAU",],NULL,sum,"Age")),
                aes(x=Exposure_agent, weight=unlist(mean), fill=Response))+geom_bar()+
    theme(legend.position = "bottom")+
    labs(
      title="Elintarvikkeiden tautitaakkoja Suomessa",
      subtitle="Haittapainotettua elinvuotta vuodessa (DALY/a)")+
    coord_flip()
 
  print(gg)
 
  gg <- ggplot(summary(oapply(BoDattr, NULL, sum,c("Age","Response"))),
              aes(x=Exposure_agent, weight=unlist(mean), fill=Scenario))+geom_bar(position="dodge")+
    coord_flip(ylim=c(0,70000))+
    labs(
      title="Elintarvikeperäisiä tautitaakkoja Suomessa",
      subtitle="Haittapainotettua elinvuotta vuodessa (DALY/a)")+
    geom_errorbar(aes(ymin=unlist(Q0.025),ymax=unlist(Q0.975),group=Scenario),position=dodge, width=0.3)+
    geom_text(aes(label=signif(unlist(mean),2), y=unlist(Q0.975)+5000, group=Scenario), position=dodge)
 
  print(gg)
 
  # Utility of actions
 
  gg <- ggplot(summary(utility),aes(x=Exposure_agent, weight=unlist(mean)))+geom_bar(fill="lightblue")+
    coord_flip(ylim=c(-9000,0))+
    labs(
      title="Ruori-skenaarioiden vaikutus tautitaakkaan",
      subtitle="Haittapainotettua elinvuotta vuodessa (DALY/a)")+
    geom_errorbar(aes(ymin=unlist(Q0.025),ymax=unlist(Q0.975)), width=0.3)+
    geom_text(aes(label=signif(unlist(mean),2), y=unlist(Q0.025)-600))
 
  print(gg)
 
} else {
 
  ###### RUN THESE ON OWN COMPUTER WITH thlGraphs PACKAGE
 
#  levels(BoDattr$Exposure_agent)
#  [1] "Aflatoksiini"      "Dioksiini"        "Norovirus"        "Toksoplasma"     
#  [5] "Lyijy"            "Listeria"          "Tyydyttynyt rasva" "Vihannesvaje"   
#  [9] "Suola"            "Hedelmävaje"     
 
  levels(BoDattr$Exposure_agent) <- c(
    "Aflatoxin","Dioxin","Noro virus","Toxoplasma", "Lead","Listeria",
    "Saturated fat","Lack of vegetables","Sodium","Lack of fruits")
 
  thlBarPlot(summary(oapply(BoDattr[BoDattr$Scenario=="BAU",],NULL,sum,"Age")),
            xvar=Exposure_agent, yvar=unlist(mean), groupvar=Response, legend.position="bottom",
            colors=thlColors(n=12),
            title="Elintarvikkeiden tautitaakkoja Suomessa", subtitle="Haittapainotettua elinvuotta vuodessa (DALY/a)")+coord_flip()
 
  thlBarPlot(summary(oapply(BoDattr, NULL, sum,c("Age","Response"))),xvar=Exposure_agent, yvar=unlist(mean),
            groupvar=Scenario,stacked=FALSE, ylimits=c(0,70000),
#            title="Elintarvikeperäisiä tautitaakkoja Suomessa",
#            subtitle="Haittapainotettua elinvuotta vuodessa (DALY/a)")+
title="Burden of disease of selected food-mediated risk factors in Finland",
subtitle="Disability-adjusted life years per year (DALY/a)")+
    coord_flip()+
    geom_errorbar(aes(ymin=unlist(Q0.025),ymax=unlist(Q0.975),group=Scenario),position=dodge, width=0.3)+
    geom_text(aes(label=signif(unlist(mean),2), y=unlist(Q0.975)+5000, group=Scenario), position=dodge)
 
  ggsave("Ruori Burden of disease.png",width=10,height=6)
#  ggsave("Ruori-tautitaakka.png",width=10,height=6)
 
 
  # Error bars are not used in this plotly because it is unclear what it means in a stacked bar.
p <-plot_ly(
    summary(oapply(BoDattr[BoDattr$Scenario=="BAU",], NULL, sum,c("Age"))),
    y=~Exposure_agent,
    x=~signif(mean,3),
    text=~Response,
    name=~Response,
    type="bar",
    orientation = "h"
  ) %>%
    layout(
      barmode="stack",
      title="Elintarvikeperäisiä tautitaakkoja Suomessa",
      xaxis=list(title="Haittapainotettua elinvuotta vuodessa (DALY/a)"),
      yaxis=list(title="")
      )
#  pushIndicatorGraph(p, 117)
  #  ggsave("Ruori-tautitaakat.png",width=10/1.2,height=6/1.2)
 
  # Utility of actions
 
  thlBarPlot(summary(utility),xvar=Exposure_agent, yvar=unlist(mean), ylimits=c(-9000,0),
            title="Ruori-skenaarioiden vaikutus tautitaakkaan",
            subtitle="Haittapainotettua elinvuotta vuodessa (DALY/a)")+coord_flip()+
    geom_errorbar(aes(ymin=unlist(Q0.025),ymax=unlist(Q0.975)), width=0.3)+
    geom_text(aes(label=signif(unlist(mean),2), y=unlist(Q0.025)-600))
 
 
  #  ggsave("Ruori-toimenpideiden vaikutus.png",width=10/1.2,height=6/1.2)
}
</rcode>
==== Arviointimallin alustus ====
<rcode name="model" label="Alusta koko kalanedistämismalli" graphics=1>
# This is code Op_fi5923/model on page [[Ruori]]
library(OpasnetUtils)
library(ggplot2)
# First empty all objects for a fresh start. Otherwise may be problems with CheckDecisions.
oempty(all=TRUE)
openv.setN(1000)
dat <- opbase.data("Op_fi5923", subset="Malliparametrit")[-1]
dec <- opbase.data("Op_fi5923", subset="Decisions")[-1]
DecisionTableParser(dec)
CTable <- opbase.data("Op_fi5923",subset="CollapseMarginals")
for(i in 1:ncol(CTable)) {CTable[[i]] <- as.character(CTable[[i]])}
CollapseTableParser(CTable)
cat("Laskennassa käytetty data.\n")
oprint(dat)
cat("Tarkastellut päätökset.\n")
oprint(dec)
cat("Aggregoidut marginaalit.\n")
oprint(CTable)
#' prepare adjusts the data table for ovariables. Requires function subgrouping from code Op_en2031/initiate on page [[Exposure-response function]]
#' @param dat data.frame
#' @param type type of data that is used. Must match content in column Type
#' @param drop columns to remove
#' @return data.frame
prepare <- function(dat, type=NULL, drop=NULL) {
  out <- dat
  if(!is.null(type)) out <- out[out$Type %in% type , ]
  if(!is.null(drop)) out <- out[!colnames(out) %in% drop]
  return(subgrouping(out))
}
objects.latest("Op_en2031", code_name="subgrouping") # [[Exposure-response function]] subgrouping
population <- Ovariable("population", data = prepare(dat,"population",c("Type","Exposure_agent","Response","Unit")))
exposure <- Ovariable("exposure", data = prepare(dat, "exposure", c("Type","Response")))
frexposed <- Ovariable("frexposed", data=prepare(dat, "frexposed", c("Type","Response","Unit")))
incidence <- Ovariable("incidence", data = prepare(dat,"incidence",c("Type","Exposure_agent","Unit")))
ERFChoice <- Ovariable(
  "ERFchoice",
  data=data.frame(
    Response=c("IQ loss","Liver cancer","Yes or no dental defect","Cancer morbidity","Sperm concenctration"),
    Exposure_agent=c("Lead","Aflatoxin","TEQ","TEQ","TEQ"),
    Result=1)
)
case_burden <- Ovariable("case_burden", data= prepare(dat,"case burden",c("Type","Exposure_agent","Unit")))
InpPAF <- EvalOutput(Ovariable("InpPAF", data =  prepare(dat,"PAF","Type")))
InpBoD <- EvalOutput(Ovariable("InpBoD", data = prepare(dat, "BoD", c("Type","Exposure_agent"))))
objects.latest("Op_en2261",code_name="BoDattr2") # [[Health impact assessment]]
#levels(BoDattr$Exposure_agent)
#[1] "Aflatoxin"        "Lead"    "TEQ"        "Fruits"            "Listeria"          "Noro virus"        "Saturated fat"    "Sodium"         
#[8] "Toxoplasma gondii" "Vegetables"     
BoDattrOrigFormula <- BoDattr@formula
BoDattr@formula <- function(...) {
  BoDattr <- BoDattrOrigFormula()
 
  levels(BoDattr$Exposure_agent) <- c("Aflatoksiini","Lyijy", "Dioksiini", "Hedelmävaje","Listeria","Norovirus",
                                      "Tyydyttynyt rasva","Suola", "Toksoplasma","Vihannesvaje")
 
  lev <- oapply(BoDattr[BoDattr$Scenario=="BAU",],"Exposure_agent",sum)
  lev <- lev$Exposure_agent[order(result(lev))]
  BoDattr$Exposure_agent <- factor(BoDattr$Exposure_agent, levels=lev)
  return(BoDattr)
}
utility <- Ovariable(
  "utility",
  dependencies = data.frame(Name="BoDattr"),
  formula = function(...) {
    out <- BoDattr * Ovariable(data=data.frame(Scenario=c("Action","BAU"),Result=c(1,-1)))
    out <- oapply(out, cols=c("Scenario","Response","Age"),FUN=sum)
    return(out)
  }
)
utility <- EvalOutput(utility)
lev <- levels(BoDattr$Exposure_agent)
cat("exposure\n")
oprint(summary(exposure,marginals=c("Exposure_agent","Age","Scenario")),digits=7)
oprint(exposure@output[exposure$Iter==1,])
cat("dose\n")
oprint(summary(dose),digits=7)
cat("ERF\n")
oprint(ERF@output[ERF$Iter==1,],digits=7)
cat("incidence\n")
oprint(summary(incidence),digits=7)
cat("frexposed\n")
oprint(summary(frexposed),digits=7)
cat("PAF\n")
oprint(summary(PAF),digits=7)
cat("BoD\n")
oprint(summary(BoD),digits=7)
cat("BoDattr\n")
oprint(summary(BoDattr,marginals=c("Response","Exposure_agent","Scenario","Age")),digits=7)
cat("Vähennyspotentiaali\n")
tmp <- summary(utility, marginals=c("Exposure_agent"))
oprint(tmp[order(unlist(tmp$mean)),])
objects.store(list=setdiff(ls(), "wiki_username"))
cat("Objects", setdiff(ls(), "wiki_username"), "stored.\n")
###################
# Disease burden
# Sample from default and sensitivity scenario about lead threshold.
cat("Elintarvikeperäisen lyijyn vaikutukset herkkyystarkastelussa.\n")
oprint(summary(BoDattr[BoDattr$Exposure_agent=="Lyijy",]))
BoDattr <- CollapseMarginal(BoDattr,"Threshold","sample")
utility <- CollapseMarginal(utility,"Threshold","sample")
cat("Elintarvikeperäisiä tautitaakkoja Suomessa\n")
tmp <- summary(oapply(BoDattr[BoDattr$Scenario=="BAU",],NULL,sum,c("Age","Response")))
oprint(data.frame(
  Altiste = tmp$Exposure_agent,
  Keskiarvo = signif(tmp$mean,2),
  "95 luottamusväli" = paste0(signif(tmp$Q0.025,2)," - ", signif(tmp$Q0.975,2)),
  Keskihajonta = signif(tmp$sd,2)
)[rev(match(lev, tmp$Exposure_agent)),])
cat("Ruori-skenaarioiden vaikutus tautitaakkaan\n")
tmp <- summary(utility)
oprint(data.frame(
  Altiste = tmp$Exposure_agent,
  Keskiarvo = signif(tmp$mean,2),
  "95 luottamusväli" = paste0(signif(tmp$Q0.025,2)," - ", signif(tmp$Q0.975,2)),
  Keskihajonta = signif(tmp$sd,2)
)[rev(match(lev, tmp$Exposure_agent)),])
dodge <- position_dodge(width=0.7)
ggplot(summary(oapply(BoDattr[BoDattr$Scenario=="BAU",],NULL,sum,"Age")),
      aes(x=Exposure_agent, weight=unlist(mean), fill=Response))+geom_bar()+
  theme(legend.position = "bottom")+
  labs(
  title="Elintarvikkeiden tautitaakkoja Suomessa",
  subtitle="Haittapainotettua elinvuotta vuodessa (DALY/a)")+
coord_flip()
ggplot(summary(oapply(BoDattr, NULL, sum,c("Age","Response"))),
      aes(x=Exposure_agent, weight=unlist(mean), fill=Scenario))+geom_bar(position="dodge")+
  coord_flip(ylim=c(0,70000))+
  labs(
    title="Elintarvikeperäisiä tautitaakkoja Suomessa",
    subtitle="Haittapainotettua elinvuotta vuodessa (DALY/a)")+
  geom_errorbar(aes(ymin=unlist(Q0.025),ymax=unlist(Q0.975),group=Scenario),position=dodge, width=0.3)+
  geom_text(aes(label=signif(unlist(mean),2), y=unlist(Q0.975)+5000, group=Scenario), position=dodge)
# Utility of actions
ggplot(summary(utility),aes(x=Exposure_agent, weight=unlist(mean)))+geom_bar(fill="lightblue")+
  coord_flip(ylim=c(-9000,0))+
  labs(
  title="Ruori-skenaarioiden vaikutus tautitaakkaan",
  subtitle="Haittapainotettua elinvuotta vuodessa (DALY/a)")+
  geom_errorbar(aes(ymin=unlist(Q0.025),ymax=unlist(Q0.975)), width=0.3)+
  geom_text(aes(label=signif(unlist(mean),2), y=unlist(Q0.025)-600))
################ Insight network
gr <- scrape(type="assessment")
objects.latest("Op_en3861", "makeGraph") # [[Insight network]]
gr <- makeGraph(gr)
#export_graph(gr, "ruori.svg")
render_graph(gr)
</rcode>


== Katso myös ==
== Katso myös ==

Nykyinen versio 18. tammikuuta 2021 kello 13.11



Kysymys

Mikä olisi kalansyönnin lisääntymisen terveysvaikutus Suomessa?

Oletettu käyttö ja käyttäjät

Tässä arvioinnissa tarkastellaan skenaarioita, joissa suomalaisten kalansyöntiä lisättäisiin kotimaisen kalan edistämisohjelmalla. Tietoja käyttäisivät mm. Luke, MMM ja YM.

Osallistujat

Rajaus

Tilannetta tarkastelleen toisaalta toteutuneeseen 2017 tilanteeseen ja toisaalta skenaarioihin vuodelle 2027, kun on joko lisätty kotimaisen kalan tuotantoa tai tuontia.

Vaihtoehdot

  • Kotimaisen kalan käytön lisääminen
  • Viljellyn kalan tuonnin lisääminen

Aikataulu

Alustavia arvioita pyritään tuottamaan maaliskuun 2020 aikana.

Vastaus

Tulokset

Tautitaakka erilaisissa kalankulutuksen skenaarioissa. Negatiivinen luku tarkoittaa terveyshyötyä.

Arviointimallin keskeiset tulokset löytyvät tästä HTML-tiedostosta.

Päätelmät

Kalansyönti vuonna 2017 vähensi tautitaakkaa n. 100 000 haittapainotettua elinvuotta (DALY) Suomessa. Jos kalansyönti lisääntyisi oheisen taulukon mukaisesti, tautitaakka vähenisi edelleen n. 40 000 DALY /a suomalaista kalankulutusta lisäämällä ja n. 35 000 DALY /a kalantuontia lisäämällä.

Perustelut

Data

Kalansyönti Suomessa eri skenaarioissa (milj kg/a kokonaiskalana)
Kalaryhmä BAU 2017 Kotimainen edistäminen Tuonnin edistäiminen
Kirjolohi suomalainen 11 45 11
Kasvatettu muu suomalainen 1 8 3
Silakka 4 18 8
Kaupallinen luonnonkala 6 12 8
Vapaa-ajan saalis 20 20 20
Tuontilohi 36 38 67
Tuontikirjolohi 8 8 17
Muu tuonti 28 28 28

Eräs keskeisistä terveysvaikutuksiin vaikuttavista oletuksista on, kuka lisääntyneen kalan söisi. Mahdollisia tapoja ajatella:

  • Syöntiä muutetaan nykysyönnin suhteessa.
  • Jokainen suomalainen syö vakiomäärän kalaa enemmän.
  • Kalansyönnin edistämistä suunnataan tietyille väestöryhmille, ja vaikutukset tulevat siellä (mihin?).
  • Vaikutukset jakautuvat satunnaisessa määrin eri yksilöille.

Malliparametrit

Malliparametrit saat näkyviin klikkaamalla.



Scenario|Action|exposure|Exposure: To child; Age: Age 1|Replace|0.98 (0.17 - 2.9)|Based on RUORI modelling (see code) Scenario|Action|exposure|Exposure: To eater; Age: Female 18-45|Replace|2.79 (0.56 - 7.08)|Based on RUORI modelling (see code) Scenario|Action|exposure|Exposure: To eater; Age: Non female 18-45|Replace|11.38 (3.44 - 46.22)|Based on RUORI modelling (see code)

Laskenta

Avoimen arvioinnin mallikoodi on kirjoitettu R:llä ja se löytyy Githubista.

Yleiskuva terveysvaikutusten laskentamallista.

Keskeiset tulosteet

+ Näytä koodi

Arviointimallin alustus

+ Näytä koodi

Katso myös

Lähteet