Ero sivun ”Ruori” versioiden välillä

Opasnet Suomista
Siirry navigaatioon Siirry hakuun
(→‎Arviointimalli: päivitetty malli ilman yleisiä ovariableja)
Rivi 135: Rivi 135:
* Malliajo 29.5.2019 [http://fi.opasnet.org/fi-opwiki/index.php?title=Toiminnot:RTools&id=dbscMpzNoaiytUi3]
* Malliajo 29.5.2019 [http://fi.opasnet.org/fi-opwiki/index.php?title=Toiminnot:RTools&id=dbscMpzNoaiytUi3]
* Malliajo 31.5.2019 [http://fi.opasnet.org/fi-opwiki/index.php?title=Toiminnot:RTools&id=JLSryIWqMiZEMhBh]
* Malliajo 31.5.2019 [http://fi.opasnet.org/fi-opwiki/index.php?title=Toiminnot:RTools&id=JLSryIWqMiZEMhBh]
* Malliajo 4.6.2019, ovariablet haetaan ao. sivuilta ja OpasnetUtilsista on päivitetty versio (ei toimi vanhalla) [http://fi.opasnet.org/fi-opwiki/index.php?title=Toiminnot:RTools&id=SI475wjvpEYqv2Z0]


<rcode graphics=1>
<rcode graphics=1>
# This is code Op_fi5889/ on page [[Ruori]]
library(OpasnetUtils)
library(OpasnetUtils)
library(ggplot2)
library(ggplot2)


openv.setN(0)
# First remove all objects for a fresh start. Otherwise may be problems with CheckDecisions.
#rm(list=ls())
#rm(list=ls(envir=openv),envir=openv)
 
openv.setN(1000)


DecisionTableParser(opbase.data("Op_fi5889",subset="Decisions"))
dat <- opbase.data("Op_fi5889", subset="Malliparametrit")[-1]
dat <- opbase.data("Op_fi5889", subset="Malliparametrit")[-1]
dec <- opbase.data("Op_fi5889", subset="Decisions")[-1]
DecisionTableParser(dec)


CTable <- opbase.data("Op_fi5889",subset="CollapseMarginals")
CTable <- opbase.data("Op_fi5889",subset="CollapseMarginals")
Rivi 149: Rivi 157:
CollapseTableParser(CTable)
CollapseTableParser(CTable)


ColBoD2$probs<-NULL # Fix CollapseTableParser! NA and "" in probs should work too.
cat("Laskennassa käytetty data.\n")
oprint(dat)
cat("Tarkastellut päätökset.\n")
oprint(dec)
cat("Aggregoidut marginaalit.\n")
oprint(CTable)


#' create_subgroups adjusts the data table for ovariables
#' 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 dat data.frame
#' @param type type of data that is used. Must match content in column Type
#' @param type type of data that is used. Must match content in column Type
#' @param drop columns to remove
#' @param drop columns to remove
#' @return data.frame
#' @return data.frame
#' Only works for one subgroup per cell. Should be generalised to match several subgroups separated by ;
#' @param data.frame that contains columns Subgroup and - if type is used - Type
#' @param type Selects given type from column Type
#' @param drop column names to drop


prepare <- function(dat, type=NULL, drop=NULL) {
prepare <- function(dat, type=NULL, drop=NULL) {
Rivi 166: Rivi 174:
   if(!is.null(type)) out <- out[out$Type %in% type , ]
   if(!is.null(type)) out <- out[out$Type %in% type , ]
   if(!is.null(drop)) out <- out[!colnames(out) %in% drop]
   if(!is.null(drop)) out <- out[!colnames(out) %in% drop]
   out$Subgroup <- as.character(out$Subgroup)
   return(subgrouping(out))
  tmp <- ifelse(out$Subgroup=="" | is.na(out$Subgroup), " : ", out$Subgroup)
  tmp <- lapply(strsplit(tmp,";"), function(x) {strsplit(x, ":")[[1]]})
  tmp <- data.frame(
    Sg_type = sapply(tmp, function(x) {x[[1]]}),
    Subgroup = sapply(tmp, function(x) {x[[2]]}),
    stringsAsFactors = FALSE
  )
  for(i in setdiff(unique(tmp$Sg_type)," ")) {
    out[[i]] <- ifelse(tmp$Sg_type==i, tmp$Subgroup,NA)
  }
  out$Subgroup <- NULL
  return(out)
}
}


ERFchoice <- Ovariable(
objects.latest("Op_en2031", code_name="initiate") # [[Exposure-response function]] subgrouping
  "ERFchoice",
  dependencies = data.frame(Name="exposure"),
  formula = function(...) {
    out <- cbind(unique(exposure@output["Exposure_agent"]),Result=1)
    return(out)
  }
)
 
dec <- opbase.data("Op_fi5889", subset="Decisions")[-1]


population <- Ovariable("population", data = prepare(dat,"population",c("Type","Exposure_agent","Response")))
population <- Ovariable("population", data = prepare(dat,"population",c("Type","Exposure_agent","Response")))
Rivi 200: Rivi 187:
incidence <- Ovariable("incidence", data = prepare(dat,"incidence",c("Type","Exposure_agent","Unit")))
incidence <- Ovariable("incidence", data = prepare(dat,"incidence",c("Type","Exposure_agent","Unit")))


disabilityweight <- Ovariable(
# case_burden equals disabilityweight * duration
   "disabilityweight",
 
   ddata = "Op_en7748",
case_burden <- Ovariable(
   "case_burden",
   ddata = "Op_en7748", # [[Goherr assessment]]
   subset = "DALYs of responses"
   subset = "DALYs of responses"
)
)
colnames(disabilityweight@data)[match(
colnames(case_burden@data)[match(
   c("Resp","disabilityweightResult"),
   c("Resp","case_burdenResult"),
   colnames(disabilityweight@data))] <- c("Response","Result")
   colnames(case_burden@data))] <- c("Response","Result")
 
disabilityweight@data <- orbind(
  disabilityweight@data,
  prepare(dat,"disability weight * duration",c("Type","Exposure_agent","Unit"))
)
 
PAF <- Ovariable(
  "PAF",
  data =  prepare(dat,"PAF","Type"),
  dependencies=data.frame(Name=c("PAF1","PAF2")),
  formula = function(...) {
    return(unkeep(PAF1,sources=TRUE,prevresults = TRUE))#OpasnetUtils::combine(PAF1, PAF2))# ,c("Subgroup","Adjust")
  }
)
 
duration <- 1
 
#objects.latest("Op_en7422", code_name="BoD") # [[Burden of disease]]
 
BoD2 <- Ovariable(
  "BoD2",
  dependencies=data.frame(Name=c("incidence","disabilityweight","population","duration")),
  formula=function(...) {
    out <- incidence * population * duration * disabilityweight
    return(out)
  }
)


BoDattr <- Ovariable(
case_burden@data <- orbind(
   "BoDattr",
   case_burden@data,
   dependencies = data.frame(Name=c("BoD2","PAF")),
   prepare(dat,"case burden",c("Type","Exposure_agent","Unit"))
  formula = function(...) {
    out <- BoD2 * PAF
    return(out)
  }
)
)


##########################################
InpPAF <- EvalOutput(Ovariable("InpPAF", data =  prepare(dat,"PAF","Type")))
 
# This is code Op_en2261/PAF1 on page [[Health impact assessment]].
library(OpasnetUtils)
 
### NOTE! The function does not work if the resultnames are not doseResult, ERFResult and thresholdResult.
PAF1 <- Ovariable(
  "PAF1", # This calculates the burden of disease for background-independent endpoints.
  dependencies = data.frame(
    Name = c(
      #      "population", # Population divided into subgroups as necessary
      "dose", # Exposure to the pollutants
      "ERF", # Other ERFs than those that are relative to background.
      "threshold", # exposure level below which the agent has no impact.
      "incidence", # background incidence of the disease. It cancels out if response not dependent on this
      "frexposed", # fraction of population that is exposed
      "sumExposcen", # function that calculates difference between exposure scenarios
      "mc2d",  # Function to run two-dimensional Monte Carlo
      "mc2dparam" # Parameters for mc2d function. Default: don't run.
    ),
    Ident = c(
      #      "Op_en2261/population", # [[Health impact assessment]]
      "Op_en2261/dose",      # [[Health impact assessment]]
      "Op_en2031/initiate",  # [[Exposure-response function]]
      "Op_en2031/initiate",  # [[Exposure-response function]]
      "Op_en2261/incidence",  # [[Health impact assessment]]
      "Op_en2261/frexposed",  # [[Health impact assessment]]
      "Op_en2261/sumExposcen",# [[Health impact assessment]]
      "Op_en7805/mc2d",      # [[Two-dimensional Monte Carlo]]
      "Op_en7805/mc2dparam"  # [[Two-dimensional Monte Carlo]]
    )
  ),
  formula = function(...) {
    out <- Ovariable()
    exps <- unique(dose$Exposure_agent)
   
    tmp <- ERF[ERF$ER_function %in% c("UR", "CSF", "ERS") , ]
    if(!is.null(exps)) tmp <- tmp[tmp$Exposure_agent %in% exps , ]
   
    if(nrow(tmp@output)>0) {
      tmp2 <- dose - threshold
      result(tmp2) <- pmax(0,result(tmp2))
      out <- tmp2 * tmp * frexposed / incidence # Actual equation
    }
   
    # Step estimates: value is 1 below threshold and above ERF, and 0 in between.
   
    tmp <- ERF[ERF$ER_function %in% c("Step", "ADI", "TDI", "RDI", "NOAEL") , ]
    if(!is.null(exps)) tmp <- tmp[tmp$Exposure_agent %in% exps , ]
    if(nrow(tmp@output)>0) {
      tmp <- 1 - (dose >= threshold) * (dose <= tmp)
      tmp <- tmp * frexposed / incidence
     
      if(nrow(out@output)==0) out <- tmp else out <- OpasnetUtils::combine(out, tmp)
    }
    out <- oapply(out, NULL, sum, c("Exposure_agent", "Exposure", "ER_function", "Scaling"))
    out <- mc2d(out) # Run two-dimensional Monte Carlo if needed
   
    return(sumExposcen(out))
  }
)
 
#objects.store(PAF1)
cat("Ovariable casesabs stored. page: Op_en2261, code_name: casesabs.\n")
 
##################################################
 
# This is code Op_en2261/casesrr on page [[Health impact assessment]].
library(OpasnetUtils)
 
PAF2 <- Ovariable(
  "PAF2", # This calculates the burden of disease for endpoints using RR.
  dependencies = data.frame(
    Name = c(
      #      "population", # Population divided into subgroups as necessary
      "RR", # Relative risks for the given exposure
      "frexposed", # fraction of exposed population
      "sumExposcen" # function that calculates difference between exposure scenarios
    ),
    Ident = c(
      #      "Op_en2261/population", # [[Health impact assessment]]
      "Op_en2261/RR",        # [[Health impact assessment]]
      "Op_en2261/frexposed", # [[Health impact assessment]]
      "Op_en2261/sumExposcen" # [[Health impact assessment]]
    )
  ),
  formula = function(...) {
    out <- frexposed * (RR - 1) # RR diluted to get PAF instead of AF
    r <- result(out)
    result(out) <- (r > 0) * (r / (r + 1)) + (r <= 1) * r # Negative if RR < 1
   
    return(sumExposcen(out))
  }
)
 
#objects.store(PAF2)
cat("Ovariable PAF2 stored. page: Op_en2261, code_name: casesrr.\n")
 
###############################################
 
# This is code Op_en2031/initiate on page [[Exposure-response function]]
 
library(OpasnetUtils)
 
ERF <- Ovariable(
  "ERF",
  dependencies = data.frame(Name = c(
    "ERF_env", # [[ERF of environmental pollutants]]
    "ERF_omega3", # [[ERF_of_omega-3_fatty_acids]]
    "ERF_mehg", # [[ERF_of_methylmercury]]
    "ERF_diox", # [[ERF_of_dioxin]]
    "ERF_vit", # [[ERF_of_dioxin]]
    "ERFchoice" # an ovariable for choosing case-specific Responses, Exposure_units or ER_functions
  ), Ident = c(
    "Op_en5827/initiate",
    "Op_en5830/initiate",
    "Op_en5825/initiate",
    "Op_en5823/initiate",
    "Op_en6866/initiate",
    "Op_en2031/ERFchoice"
  )),
  formula = function(...) {
   
    out <- OpasnetUtils::combine(
      ERF_env,
      ERF_omega3,
      ERF_mehg,
      ERF_diox,
      ERF_vit
    )
    #    out@output$Age[is.na(out@output$Age)] <- ""
    out@marginal[colnames(out@output) == "Exposure_unit"] <- FALSE
    if("Iter" %in% colnames(out@output)) {
      out@output <- fillna(out@output, marginals = "Iter")} # To make sure that deterministic ERFs work properly.
    out <- unkeep(out * ERFchoice, cols=c("ERFchoiceSource", "ERFchoiceResult")) #technical nuisance removed
    out@output <- prepare(out@output)
   
    return(out)                       
  }
)
 
threshold <- Ovariable(
  "threshold",
  dependencies = data.frame(Name = c(
    "threshold_env", # [[ERF of environmental pollutants]]
    "threshold_omega3", # [[ERF_of_omega-3_fatty_acids]]
    "threshold_mehg", # [[ERF_of_methylmercury]]
    "threshold_diox", # [[ERF_of_dioxin]]
    "threshold_vit" # [[ERFs of vitamins]]
  ), Ident = c(
    "Op_en5827/initiate",
    "Op_en5830/initiate",
    "Op_en5825/initiate",
    "Op_en5823/initiate",
    "Op_en6866/initiate"
  )),
  formula = function(...) {
   
    out <- OpasnetUtils::combine(
      threshold_env,
      threshold_omega3,
      threshold_mehg,
      threshold_diox,
      threshold_vit
    )
    #    out@output$Age[is.na(out@output$Age)] <- ""
    out@output <- prepare(out@output)
   
    return(out)                       
  }
)
 
#objects.store(ERF, threshold)
cat("Ovariables ERF, threshold stored. Page: Op_en2031, code: initiate.\n")
 
##############################
 
# population <- EvalOutput(population, verbose=TRUE)
 
BoD2 <- EvalOutput(BoD2, forceEvaluation=TRUE, verbose=TRUE)


BoDattr <- EvalOutput(BoDattr, verbose=TRUE)
InpBoD <- EvalOutput(Ovariable("InpBoD", data = prepare(dat, "BoD", c("Type","Exposure_agent"))))


oprint(ls())
objects.latest("Op_en2261",code_name="BoDattr") # [[Health impact assessment]]


oprint(summary(exposure))
BoDattr <- CheckCollapse(EvalOutput(BoDattr,verbose=TRUE))
oprint(summary(dose))
oprint(summary(ERF))
oprint(summary(incidence))
oprint(summary(frexposed))
oprint(summary(PAF1))
oprint(summary(PAF2),digits=7)
oprint(summary(BoD2),digits=7)
oprint(summary(BoDattr),digits=7)


oprint(exposure@output)
cat("exposure\n")
oprint(dose@output)
oprint(summary(exposure),digits=7)
oprint(ERF@output)
cat("dose\n")
oprint(incidence@output)
oprint(summary(dose),digits=7)
oprint(frexposed@output)
cat("ERF\n")
oprint(PAF1@output)
oprint(summary(ERF),digits=7)
oprint(PAF2@output)
cat("incidence\n")
oprint(PAF@output)
oprint(summary(incidence),digits=7)
oprint(PAF@data)
cat("frexposed\n")
oprint(BoD2@output,digits=7)
oprint(summary(frexposed),digits=7)
oprint(BoDattr@output,digits=7)
cat("PAF@output\n")
oprint(summary(PAF),digits=7)
cat("BoD\n")
oprint(summary(BoD),digits=7)
cat("BoDattr\n")
oprint(summary(BoDattr,marginal=c("Response","Exposure_agent")),digits=7)


ggplot(ERF@output, aes(x=Response, weight=ERFResult))+geom_bar()+coord_flip()
ggplot(ERF@output, aes(x=Response, weight=ERFResult))+geom_bar()+coord_flip()
ggplot(BoD2@output, aes(x=Response, weight=BoD2Result))+geom_bar()+coord_flip()
ggplot(BoD@output, aes(x=Response, weight=BoDResult))+geom_bar()+coord_flip()
ggplot(BoDattr@output, aes(x=Response, weight=BoDattrResult))+geom_bar()+coord_flip()
ggplot(BoDattr@output, aes(x=Response, weight=BoDattrResult, fill=Hepatitis))+geom_bar()+coord_flip()
</rcode>
</rcode>



Versio 4. kesäkuuta 2019 kello 08.19


Ruori on VN-TEAS-hanke, jossa arvioidaan erilaisia ruokaan liittyviä riskitekijöitä, niiden vähentämispotentiaalia ja niiden terveys- ja talousvaikutuksia.

Rajaus

Kysymys

Millaista tautitaakkaa Suomessa aiheuttavat Ruori-altisteet (tyydyttynyt rasva, vähäiset vihannekset, vähäiset hedelmät, liiallnen suola, dioksiinit, lyijy, toksoplasma, norovirus ja legionella?

Aikataulu ja käyttäjät

  • Hanke alkoi 2018 ja loppuu 30.6.2019.
  • Toteuttajina ovat Ruokavirasto, THL ja Helsingin yliopisto.
  • Seuraavat skenaariot ovat tarkastelussa:

Vastaus

Vastaus kirjoitetaan tähän pian.

Perustelut

Data

Mitä kaikkea kuuluu vähäiseen hedelmien tai vihannesten syöntiin?

  • Vähähedelmäinen ruokavalio: hedelmien kulutus alle 3 annosta päivässä (310 g yhteensä) (sisältää tuoreet, pakastetut, keitetyt, säilötyt ja kuivatut hedelmät mutta ei sisällä hedelmämehuja tai suolaan tai etikkaan säilöttyjä hedelmiä) http://www.healthdata.org/terms-defined. Diet low in fruits: Consumption of less than 3 servings (310 g total) of fruits per day (includes fresh, frozen, cooked, canned, or dried fruit but excludes fruit juices and salted or pickled fruits).
  • Vähävihanneksinen ruokavalio: vihannesten kulutus alle 4 annosta (400 g yhteensä) (sisältää tuoreet, pakastetut, keitetyt, säilötyt ja kuivatut vihannekset mukaan lukien palkokasvit mutta ei sisällä suolaan tai etikkaan säilöttyjä vihanneksia eikä pähkinöitä, siemeniä tai tärkkelyspitoisia vihanneksia kuten perunaa tai maissia). Diet low in vegetables: Consumption of less than 4 servings (400 g total) of vegetables per day (includes fresh, frozen, cooked, canned, or dried vegetables including legumes but excluding salted or pickled, juices, nuts and seeds, and starchy vegetables such as potatoes or corn).

Luken tilastoista löytyy tietoja kalansyönnistä Suomessa. Järvikalaa ei ole eritelty, mutta muut kuin viljellyt ja merilajit ovat yhteensä 2.6 kg/a henkeä kohti. https://stat.luke.fi/en/fish-consumption-2017_en

Voiko DALYt muuntaa euroiksi, ja miten se tehdään?

  • Drake ehdottaa globaalin arvon päättämistä DALYn hinnaksi, samaan tapaan kuin 1,25 dollarin alittava päivätulo on määritelty absoluuttiseksi köyhyydeksi. Tällöin kaikki tuota hintaa kustannustehokkaammat toimet kannattaisi tehdä joko kansallisin, tai jos se ei jostain syystä onnistu, kansainvälisin toimin. Hän ei kuitenkaan ehdota suuruutta tälle hinnalle.[1]
  • Brent on analysoinut implisiittisiä hintoja DALYlle Global Fund for AIDS, Tuberculosis, and Malaria -säätiön rahoituspäätöksistä. DALYn hinta näyttää olevan 6300 USD kaikille taudeille keskimäärin, ja 11900 USD erityisesti HIV/AIDSille[2]. Globaalit luvut ovat toki pienemmät kuin mitä rikkaissa länsimaissa katsottaisiin aiheelliseksi käyttää.
  • Erilaisista arvioinneista löytyy vaihtelevia lukuja yhden DALYn rahalliselle hinnalle. Esimerkiksi IOMin Shecan-projekti käytti arvoa 50393 €/menetetty elinvuosi[3], ja IGCB(N)-meluarviointiryhmä käyttää arvoa 60000 GBP/QALY (laatupainotettu elinvuosi) mutta samalla toteaa, että eri arvioinneissa arvot voivat vaihdella välillä 29000 - 130000 GBP/QALY[4][5].
  • Berryn ja Flindellin mukaan Isossa-Britanniassa käytäntö on muodostunut sellaiseksi, että lääkkeet tai muut lääketieteelliset toimenpiteet saavat kansallisessa terveysjärjestelmässä helposti puollon, jos ne tuottavat yhden terveen elinvuoden alle 20000 GBP:n kustannuksilla. Tyypillisesti toteutetaan hankkeita tasolla 30000 GBP/QALY, mutta hankkeilta hinnaltaan yli 50000 GBP/QALY vaaditaan erityisiä perusteluja[6].
  • Toisaalta Hammitt todistelee, että hinta per tilastollinen elämä (value per statistical life, VSL) ja hinta per DALY muuttuvat epälineaarisesti suhteessa toisiinsa, eikä näin ollen olisi mahdollista käyttää hyvinvointimuutoksen mittarina vakiolla kerrottua DALY-arvoa, ainakaan taloudellisen hyvinvointiteorian (economic welfare theory) puitteissa.[7]

Pitoisuusanalyysien kustannukset (poistettu).

Trikiinin valvontakustannukset: Tämän artikkelin mukaan trikiinin DALYt ovat vain luokkaa 100 DALY/miljardi ihmistä, joten valvonta ei ole mielekästä[8].

Malliparametrit

Malliparametrit(various)
ObsResponseExposure_agentTypeSubgroupUnitResultDescription
1CHD deathBoDAge:Female 25-69DALY9876 (9103 - 10784)Z:\Projects\RUORI\tautitaakka\Rasvat\IHD_data_IHME.csv
2CHD deathBoDAge:Female 70+DALY42750 (41007 - 45909)Z:\Projects\RUORI\tautitaakka\Rasvat\IHD_data_IHME.csv
3CHD deathBoDAge:Male 25-69DALY48851 (54035 - 46123)Z:\Projects\RUORI\tautitaakka\Rasvat\IHD_data_IHME.csv
4CHD deathBoDAge:Male 70+DALY48150 (46327 - 51255)Z:\Projects\RUORI\tautitaakka\Rasvat\IHD_data_IHME.csv
5Diet high in sodiumBoDAge:Total populationDALY27670 (1310 - 66420)IHME GBD2017
6Diet low in fruitsBoDAge:Total populationDALY36050 (20570 - 54800)IHME GBD2017 http://ghdx.healthdata.org/gbd-results-tool?params=gbd-api-2017-permalink/da3bde44e863adb438c5fb47a89942fb
7Diet low in vegetablesBoDAge:Total populationDALY28440 (14190 - 45960)IHME GBD2017
8Liver cancerBoDAge:Age 25-64DALY2499 (2018 - 3115)From IHME (2014)
9Liver cancerBoDAge:Age 65-74DALY2745 (2245 - 3311)From IHME (2014)
10dummycase burdenAge:Female 25-69DALY /case0Needed for case_burden to cover all Ages
11dummycase burdenAge:Female 70+DALY /case0Needed for case_burden to cover all Ages
12dummycase burdenAge:Male 25-69DALY /case0Needed for case_burden to cover all Ages
13dummycase burdenAge:Male 70+DALY /case0Needed for case_burden to cover all Ages
14dummycase burdenAge:Age 25-64DALY /case0Needed for case_burden to cover all Ages
15dummycase burdenAge:Age 65-74DALY /case0Needed for case_burden to cover all Ages
16IQ losscase burdenAge:Age 1DALY /IQ0.11 (0.06 - 0.16)Arja used 0.013 but here we use Goherr value instead
17Listeriacase burdenAge:Total populationDALY/case10 (5 - 13.3)WHO 2015 report, European values (Table A8.2)
18Noro viruscase burdenAge:Total populationDALY/case0.0015 - 0.0025WHO 2015 report, European values (Table A8.2)
19Toxoplasma gondiicase burdenAge:Age 0 (congenital)DALY/case7WHO 2015 report, European values (Table A8.2)
20Toxoplasma gondiicase burdenAge:Age 1+ (acquired)DALY/case0.05WHO 2015 report, European values (Table A8.2)
21AflatoxinexposureAge:Age 25-64ng /kg /d0.85 - 1.14Finravinto 2012
22AflatoxinexposureAge:Age 65-74ng /kg /d0.5 - 0.67Finravinto 2012
23LeadexposureAge:Age 1ug /l27.9Measured as blood concentration. RASKURI, Z:\Projects\RUORI\tautitaakka\Lyijy\Lyijy_tautitaakkadata.xlsx
24Saturated fatexposureAge:Age 25-69E%13.1 (12.9 - 13.4)Finland, 2010 situation from Wang et al. Supplementary
25Saturated fatexposureAge:Age 70+E%13.2 (12.8 - 13.6)Finland, 2010 situation from Wang et al. Supplementary
26AflatoxinfrexposedAge:Age 25-64fraction1dummy variable
27AflatoxinfrexposedAge:Age 65-74fraction1dummy variable
28LeadfrexposedAge:Age 1fraction0.0657Population exposed to lead over threshold: 3126. RASKURI, Z:\Projects\RUORI\tautitaakka\Lyijy\Lyijy_tautitaakkadata.xlsx
29IQ lossincidenceAge:Age 1IQ /100000py596000On average, a population has ca. 6 IQ points per person below 100: mean(abs(rnorm(10000, 100,15)-100))/2
30ListeriaincidenceAge:Total population# /100000py1.22Tartuntatautirekisteri 2016: 66 kpl. WHO 2015 report, European values (Table A8.2): 0.2 (0.2 - 0.3)
31Liver cancerincidenceAge:Age 25-64# /100000py4.06Finnish Cancer Registry, average 2011-2015
32Liver cancerincidenceAge:Age 65-74# /100000py26.16Finnish Cancer Registry, average 2011-2015
33Noro virusincidenceAge:Total population# /100000py1652 (630 - 3294)WHO 2015 report, European values (Table A8.2)
34Toxoplasma gondiiincidenceAge:Age 0 (congenital)# /100000py0.3 (0.2 - 0.7)WHO 2015 report, European values (Table A8.2)
35Toxoplasma gondiiincidenceAge:Age 1+ (acquired)# /100000py119 (77 - 188)WHO 2015 report, European values (Table A8.2)
36Diet low in fruitsFruitsPAFAge:Total populationfraction1dummy variable
37ListeriaListeriaPAFAge:Total populationfraction1dummy variable
38Noro virusNoro virusPAFAge:Total populationfraction1dummy variable
39CHD deathSaturated fatPAFAge:Age 25-69fraction0.064 (0.050 - 0.078)Finland, 2010 situation from Wang et al. Supplementary
40CHD deathSaturated fatPAFAge:Age 70+fraction0.048 (0.033 - 0.063)Finland, 2010 situation from Wang et al. Supplementary
41Diet high in sodiumSodiumPAFAge:Total populationfraction1dummy variable
42Toxoplasma gondiiToxoplasma gondiiPAFAge:Age 0 (congenital)fraction1dummy variable
43Toxoplasma gondiiToxoplasma gondiiPAFAge:Age 1+ (acquired)fraction1dummy variable
44Diet low in vegetablesVegetablesPAFAge:Total populationfraction1dummy variable
45populationAge:Age 147577Statistics Finland, 2018 http://stat.fi/til/synt/index.html
46populationAge:Age 25-64#2835089Statistics Finland?
47populationAge:Age 65-74#615487Statistics Finland?
48populationAge:Total population#5471753Statistics Finland?
49populationAge:Age 0 (congenital)#47577Statistics Finland?
50populationAge:Age 1+ (acquired)#5471753Statistics Finland?
51HepatitisprevalenceHepatitis:Hepatitis B-fraction0.005TerveSuomi
52HepatitisprevalenceHepatitis:Hepatitis B+fraction0.995TerveSuomi
53Saturated fatscenario exposureAge:Male 18-24E%14.9Finravinto 2017. Supplementary table 7.12. Average daily intake of saturated fats by gender and age.
54Saturated fatscenario exposureAge:Male 25-44E%15.2Finravinto 2017. Supplementary table 7.12. Average daily intake of saturated fats by gender and age.
55Saturated fatscenario exposureAge:Male 45-64E%15.3Finravinto 2017. Supplementary table 7.12. Average daily intake of saturated fats by gender and age.
56Saturated fatscenario exposureAge:Male 65-74E%14.4Finravinto 2017. Supplementary table 7.12. Average daily intake of saturated fats by gender and age.
57Saturated fatscenario exposureAge:Female 18-24E%13.8Finravinto 2017. Supplementary table 7.12. Average daily intake of saturated fats by gender and age.
58Saturated fatscenario exposureAge:Female 25-44E%14.8Finravinto 2017. Supplementary table 7.12. Average daily intake of saturated fats by gender and age.
59Saturated fatscenario exposureAge:Female 45-64E%14.3Finravinto 2017. Supplementary table 7.12. Average daily intake of saturated fats by gender and age.
60Saturated fatscenario exposureAge:Female 65-74E%14.0Finravinto 2017. Supplementary table 7.12. Average daily intake of saturated fats by gender and age.
61IQ lossLeadthresholdAge:Age 1ug /l24Lanphear et al 2005 https://doi.org/10.1289/ehp.7688 CHECK THRESHOLD
62Liver cancerAflatoxinURHepatitis:Hepatitis B-# /(ng /kg /d /100000py)0.01 (0.002 - 0.03)WHO Is this per year or per lifetime?
63Liver cancerAflatoxinURHepatitis:Hepatitis B+# /(ng /kg /d /100000py)0.3 (0.01 - 0.5)WHO Is this per year or per lifetime?
64IQ lossLeadURAge:Age 1IQ l /ug0.039Lanphear et al 2005 https://doi.org/10.1289/ehp.7688 CHECK THRESHOLD

Annos-vasteet on tässä vain näytillä, ja oikeat käyttöön tulevat luvut ovat sivulla op_en:ERFs of environmental pollutants.

Decisions(-)
ObsDecisionOptionVariableCellChangeResultDescription
1AdjustBAUincidenceMultiply0.000011/100000 py --> 1 py
2AdjustBAUPAFIdentity1Scaled from Wang to Finravinto 2017: mean(15.2,15.3,14.8,14.0)/13.1
3AdjustBAUPAFExposure_agent:Saturated fatMultiply1.132Healthy people. Data from TerveSuomi
4HepatitisHepatitis B-BoDMultiply0.995Hepatitis B patients. Data from TerveSuomi
5HepatitisHepatitis B+BoDMultiply0.0051/100000py --> 1/py
6AdjustBAUERFIdentity1For completion
7AdjustBAUERFResponse:Liver cancerMultiply0.00001For completion
CollapseMarginals(-)
ObsVariableIndexProbsFunctionDummyDescription
1BoDincidenceSource,disabilityweightSource,populationSource,BoDSourcesum1Remove redundant
2PAFUnit, Exposure, Scaling,Exposcen, ER_function, ERFchoiceSource, exposureSource, bgexposureSource, BWSource, doseSource, thresholdSource, ERFSource, RRSource, frexposedSource, incidenceSource, InpPAFSourcesum1Remove redundant
3case_burdencase_burdenSourcesum1Fill missing Ages
4BoDattrPAFSource, Hepatitissum1Remove redundant

Laskenta

Arviointimalli

  • Malliajo 29.5.2019 [3]
  • Malliajo 31.5.2019 [4]
  • Malliajo 4.6.2019, ovariablet haetaan ao. sivuilta ja OpasnetUtilsista on päivitetty versio (ei toimi vanhalla) [5]

+ Näytä koodi

Tautitaakkakuvia

+ Näytä koodi

Viitteet

  1. Drake T. (2014) Priority setting in global health: towards a minimum DALY value. Health Economics Letter 23:2:248-252. https://doi.org/10.1002/hec.2925
  2. Brent RJ. (2011) An implicit price of a DALY for use in a cost-benefit analysis of ARVs. Applied Economics 43:11:1413-1421. https://doi.org/10.1080/00036840802600475
  3. Minstry R. (2011) Methodology for valuing health impacts on the SHEcan project. IOM Research Project P937/96. http://ec.europa.eu/social/BlobServlet?docId=10178&langId=en
  4. The Interdepartmental Group on Costs and Benefits Noise Subject Group. (2014) Environmental Noise: Valuing impacts on sleep disturbance, annoyance, hypertension, productivity and quiet. https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/380852/environmental-noise-valuing-imapcts-PB14227.pdf
  5. The Interdepartmental Group on Costs and Benefits Noise Subject Group (IGCB(N)). (2010) Noise & Health – Valuing the Human Health Impacts of Environmental Noise Exposure. https://khub.net/c/document_library/get_file?uuid=6a229977-e27a-43c5-a780-e224649bd2df&groupId=6197021
  6. Berry BF, Flindell IH. (2009) Estimating Dose-Response Relationships between Noise Exposure and Human Health Impacts in the UK. BEL Technical Report 2009-002. https://webarchive.nationalarchives.gov.uk/20130123222353/http://archive.defra.gov.uk/environment/quality/noise/igcb/documents/tech-report.pdf
  7. Hammitt, J.K. (2013) Admissible utility functions for health, longevity, and wealth: integrating monetary and life-year measures. J Risk Uncertain 47: 311. https://doi.org/10.1007/s11166-013-9178-4
  8. Brecht Devleesschauwer, Nicolas Praet, Niko Speybroeck, Paul R. Torgerson, Juanita A. Haagsma, KrisDe Smet, K. Darwin Murrell, Edoardo Pozio, Pierre Dorny. (2015) The low global burden of trichinellosis: evidence and implications. International Journal for Parasitology 45, 2–3, 95-99. [1] [2]

Katso myös