EU-kalat: Difference between revisions

From Opasnet
Jump to navigation Jump to search
 
(6 intermediate revisions by the same user not shown)
Line 455: Line 455:
==== Initiate conc_pcddf for PFAS disease burden study ====
==== Initiate conc_pcddf for PFAS disease burden study ====


===== Initiate euw data.frame =====
This code is similar to preprocess but is better and includes PFAS concentrations from [[:op_fi:PFAS-yhdisteiden tautitaakka]]. It produces data.frame euw that is the EU-kalat + PFAS data in wide format and, for PFAS but not EU-kalat, a sampled value for measurements below the level of quantification.
<rcode name="preprocess2" label="Preprocess and initiate data.frame euw (for developers only)" embed=1>
# This is code Op_en3104/preprocess2 on page [[EU-kalat]]
library(OpasnetUtils)
library(ggplot2)
library(reshape2)
openv.setN(1)
opts = options(stringsAsFactors = FALSE)
euRaw <- Ovariable("euRaw", ddata = "Op_en3104", subset = "POPs") # [[EU-kalat]]
eu <- Ovariable(
  "eu",
  dependencies = data.frame(
    Name=c("euRaw", "TEF"),
    Ident=c(NA,"Op_en4017/initiate")
  ),
  formula = function(...) {
    out <- euRaw
    out$Length<-as.numeric(as.character(out$Length_mean_mm))
    out$Year <- as.numeric(substr(out$Catch_date, nchar(as.character(out$Catch_date))-3,100))
    out$Weight<-as.numeric(as.character(out$Weight_mean_g))
    out <- out[,c(1:6, 8: 10, 14:17, 19:22, 18)] # See below
   
    #[1] "ﮮTHL_code"            "Matrix"                "POP"                  "Fish_species"       
    #[5] "Catch_site"            "Catch_location"        "Catch_season"          "Catch_square"       
    #[9] "N_individuals"        "Sex"                  "Age"                  "Fat_percentage"     
    #[13] "Dry_matter_percentage" "euRawSource"          "Length"                "Year"               
    #[17] "Weight"                "euRawResult"         
   
    colnames(out@output)[1:13] <- c("THLcode", "Matrix", "Compound", "Fish", "Site", "Location", "Season",
                                  "Square","N","Sex","Age","Fat","Dry_matter")
    out@marginal <- colnames(out)!="euRawResult"
   
    tmp <- oapply(out * TEF, cols = "Compound", FUN = "sum")
    colnames(tmp@output)[colnames(tmp@output)=="Group"] <- "Compound"
    # levels(tmp$Compound)
    # [1] "Chlorinated dibenzo-p-dioxins" "Chlorinated dibenzofurans"    "Mono-ortho-substituted PCBs" 
    # [4] "Non-ortho-substituted PCBs" 
    levels(tmp$Compound) <- c("PCDD","PCDF","moPCB","noPCB")
   
    out <- OpasnetUtils::combine(out, tmp)
   
    out$Compound <- factor( # Compound levels are ordered based on the data table on [[TEF]]
      out$Compound,
      levels = unique(c(levels(TEF$Compound), unique(out$Compound)))
    )
    out$Compound <- out$Compound[,drop=TRUE]
   
    return(out)
  }
)
eu <- EvalOutput(eu)
euw <- reshape(
  eu@output,
  v.names = "euResult",
  idvar = c("THLcode", "Matrix", "Fish"), # , "Site","Location","Season","Square","N","Sex","Age","Fat", "Dry_matter","Length","Year","Weight"
  timevar = "Compound",
  drop = c("euRawSource","TEFversion","TEFrawSource","TEFSource","Source","euSource"),
  direction = "wide"
)
colnames(euw) <- gsub("euResult\\.","",colnames(euw))
euw$PCDDF <- euw$PCDD + euw$PCDF
euw$PCB <- euw$noPCB + euw$moPCB
euw$TEQ <- euw$PCDDF + euw$PCB
euw$PFOA <- euw$PFOA / 1000 # pg/g --> ng/g
euw$PFOS <- euw$PFOS / 1000 # pg/g --> ng/g
euw$PFAS <- euw$PFOA + euw$PFOS
#################### PFAS measurements from Porvoo
conc_pfas_raw <- EvalOutput(Ovariable(
  "conc_pfas_raw",
  data=opbase.data("Op_fi5932", subset="PFAS concentrations"), # [[PFAS-yhdisteiden tautitaakka]]
  unit="ng/g f.w.")
)@output
conc_pfas_raw <- reshape(conc_pfas_raw,
                        v.names="conc_pfas_rawResult",
                        timevar="Compound",
                        idvar=c("Obs","Fish"),
                        drop="conc_pfas_rawSource",
                        direction="wide")
colnames(conc_pfas_raw) <- gsub("conc_pfas_rawResult\\.","",colnames(conc_pfas_raw))
conc_pfas_raw <- within(conc_pfas_raw, PFAS <- PFOS + PFHxS + PFOA + PFNA)
conc_pfas_raw$Obs <- NULL
euw <- orbind(euw, conc_pfas_raw)
objects.store(euw)
cat("Data.frame euw stored.\n")
</rcode>
===== Initiate conc_param using Bayesian approach =====
Bayesian approach for PCDDF, PCB, OT, PFAS.
Bayesian approach for PCDDF, PCB, OT, PFAS.
* Model run 2021-03-08 [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=ZvJDOo7xL8d7x7EI]
* Model run 2021-03-08 [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=ZvJDOo7xL8d7x7EI]
* Model run 2021-03-08 [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=VpSUS4pfGavspLG9] with the fish needed in PFAS assessment
* Model run 2021-03-08 [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=VpSUS4pfGavspLG9] with the fish needed in PFAS assessment
* Model run 2021-03-12 [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=Lc9KWY7r1tTuGWVD] using euw
* Model run 2021-03-13 [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=pTiMHkD4Lq0EdLab] with location parameter for PFAS
* Model run 2021-03-17 [http://en.opasnet.org/en-opwiki/index.php?title=Special:RTools&id=Mrko9rrynNRELP07] location parameter not plotted because problems with older R version in Opasnet.


<rcode name="pollutant_bayes" label="Initiate conc_pcddf with PFAS, OT (for developers only)" embed=0 graphics=1>
<rcode name="pollutant_bayes" label="Initiate conc_param with PCDDF, PFAS, OT (for developers only)" embed=0 graphics=1>
# This is code Op_en3104/pollutant_bayes on page [[EU-kalat]]
# This is code Op_en3104/pollutant_bayes on page [[EU-kalat]]
# The code is also available at https://github.com/jtuomist/pfas/blob/main/conc_pcddf_preprocess.R
# The code is also available at https://github.com/jtuomist/pfas/blob/main/conc_pcddf_preprocess.R
Line 473: Line 576:
#' @param df data.frame
#' @param df data.frame
#' @return data.matrix
#' @return data.matrix
add_loq <- function(df) {
add_loq <- function(df) { # This should reflect the fraction of observations below LOQ.
   LOQ <- unlist(lapply(df, FUN = function(x) min(x[x!=0], na.rm=TRUE)))  
   LOQ <- unlist(lapply(df, FUN = function(x) min(x[x!=0], na.rm=TRUE)))  
   out <- sapply(
   out <- sapply(
Line 485: Line 588:
#size <- Ovariable("size", ddata="Op_en7748", subset="Size distribution of fish species")
#size <- Ovariable("size", ddata="Op_en7748", subset="Size distribution of fish species")
#time <- Ovariable("time", data = data.frame(Result=2015))
#time <- Ovariable("time", data = data.frame(Result=2015))
#conc_pcddf <- EvalOutput(conc_pcddf,verbose=TRUE)
#View(conc_pcddf@output)


objects.latest("Op_en3104", code_name = "preprocess") # [[EU-kalat]] eu, eu2, euRatio, indices
objects.latest("Op_en3104", code_name = "preprocess2") # [[EU-kalat]] euw
 
eu2 <- EvalOutput(eu2)


# Hierarchical Bayes model.
# Hierarchical Bayes model.
Line 502: Line 601:
# Catchment year affects all species similarly.  
# Catchment year affects all species similarly.  


eu2 <- eu2[!eu2$Compound %in% c("MPhT","DOT","BDE138"),] # No values > 0
eu3 <- euw[!colnames(euw) %in% c("MPhT","DOT","BDE138")] # No values > 0


eu3 <- eu2[eu2$Matrix == "Muscle" , ]@output
eu3 <- eu3[eu3$Matrix == "Muscle" , ]
eu3 <- reshape(  
eu3$Locat <- ifelse(eu3$Location=="Porvoo",2,
  eu3,
                      ifelse(eu3$Location=="Helsinki, Vanhankaupunginlahti Bay",3,1))
  v.names = "eu2Result",
locl <- c("Finland","Porvoo","Helsinki")
  idvar = c("THLcode", "Fish"),
  timevar = "Compound",  
  drop = c("Matrix","eu2Source"),
  direction = "wide"
)
colnames(eu3) <- gsub("eu2Result\\.","",colnames(eu3))
eu3$TEQ <- eu3$PCDDF + eu3$PCB
eu3$PFAS <- eu3$PFOA + eu3$PFOS


#conl_nd <- c("PFAS","PFOA","PFOS","DBT","MBT","TBT","DPhT","TPhT")
#conl_nd <- c("PFAS","PFOA","PFOS","DBT","MBT","TBT","DPhT","TPhT")
conl_nd <- c("PFAS","PFOS","TBT")
conl_nd <- c("PFAS","PFOS") # TBT would drop Porvoo measurements
fisl <- fisl_nd <- c("Baltic herring","Bream","Flounder","Perch","Roach","Salmon","Whitefish")
fisl <- fisl_nd <- c("Baltic herring","Bream","Flounder","Perch","Roach","Salmon","Whitefish")


eu4 <- eu3[rowSums(is.na(eu3[conl_nd]))<length(conl_nd) & eu3$Fish %in% fisl_nd ,
eu4 <- eu3[rowSums(is.na(eu3[conl_nd]))<length(conl_nd) & eu3$Fish %in% fisl_nd ,
           c(1:5,match(conl_nd,colnames(eu3)))]
           c(1:5,match(c("Locat",conl_nd),colnames(eu3)))]
#fisl_nd <- as.character(unique(eu4$Fish))


conc_nd <- add_loq(eu4[eu4$Fish %in% fisl_nd , 6:ncol(eu4)])
conc_nd <- add_loq(eu4[conl_nd])


conl <- c("TEQ","PCDDF","PCB") # setdiff(colnames(eu3)[-(1:5)], conl_nd)
conl <- c("TEQ","PCDDF","PCB") # setdiff(colnames(eu3)[-(1:5)], conl_nd)
eu3 <- eu3[!is.na(eu3$PCDDF) & eu3$Fish %in% fisl , c(1:5, match(conl,colnames(eu3)))]
eu3 <- eu3[!is.na(eu3$PCDDF) & eu3$Fish %in% fisl , c(1:5, match(conl,colnames(eu3)))]
#conl <- colnames(eu3)[-(1:5)]
#fisl <- as.character(unique(eu3$Fish))


oprint(head(eu3))
oprint(head(eu3))
Line 544: Line 632:
fisl_nd
fisl_nd


conc <- add_loq(eu3[rowSums(is.na(eu3))==0 , 6:ncol(eu3)]) # Remove rows with missing data.
eu3 <- eu3[rowSums(is.na(eu3))==0,]
conc <- add_loq(eu3[conl]) # Remove rows with missing data.


# The model assumes that all fish groups have the same Omega but mu varies.
# The model assumes that all fish groups have the same Omega but mu varies.
Line 559: Line 648:
       for(j in 1:C_nd) {
       for(j in 1:C_nd) {
         conc_nd[i,j] ~ dnorm(muind_nd[i,j], tau_nd[j])
         conc_nd[i,j] ~ dnorm(muind_nd[i,j], tau_nd[j])
         muind_nd[i,j] <- mu_nd[fis_nd[i],j] #+ lenp[fis[i]]*length[i] + timep*year[i]
         muind_nd[i,j] <- mu_nd[fis_nd[i],j] + mulocat[locat[i]] #+ lenp[fis[i]]*length[i] + timep*year[i]
       }
       }
     }
     }
Line 579: Line 668:
     }
     }
     # Non-dioxins
     # Non-dioxins
    mulocat[1] <- 0
    mulocat[2] ~ dnorm(0,0.001)
    mulocat[3] ~ dnorm(0,0.001)
     for(j in 1:C_nd) {
     for(j in 1:C_nd) {
       tau_nd[j] ~ dgamma(0.001,0.001)
       tau_nd[j] ~ dgamma(0.001,0.001)
Line 600: Line 692:
     conc = log(conc),
     conc = log(conc),
     conc_nd = log(conc_nd),
     conc_nd = log(conc_nd),
    locat = eu4$Locat,
     #    length = eu3$Length-170, # Subtract average herring size
     #    length = eu3$Length-170, # Subtract average herring size
     #    year = eu3$Year-2009, # Substract baseline year
     #    year = eu3$Year-2009, # Substract baseline year
Line 624: Line 717:
     'pred_nd',
     'pred_nd',
     'mu_nd',
     'mu_nd',
     'tau_nd'
     'tau_nd',
    'mulocat'
   ),  
   ),  
   thin=thin,
   thin=thin,
Line 637: Line 731:
dimnames(samps.j$tau_nd) <- list(Compound = conl_nd, Iter = 1:N, Chain = 1:4)
dimnames(samps.j$tau_nd) <- list(Compound = conl_nd, Iter = 1:N, Chain = 1:4)
#dimnames(samps.j$timep) <- list(Dummy = "time", Iter = 1:N, Chain = 1:4)
#dimnames(samps.j$timep) <- list(Dummy = "time", Iter = 1:N, Chain = 1:4)
dimnames(samps.j$mulocat) <- list(Area = locl, Iter = 1:N, Chain = 1:4)


##### conc_param contains expected values of the distribution parameters from the model
##### conc_param contains expected values of the distribution parameters from the model
Line 652: Line 747:
   #      )
   #      )
   mu_nd =  apply(samps.j$mu_nd, MARGIN = 1:2, FUN = mean),
   mu_nd =  apply(samps.j$mu_nd, MARGIN = 1:2, FUN = mean),
   tau_nd =  apply(samps.j$tau_nd, MARGIN = 1, FUN = mean)
   tau_nd =  apply(samps.j$tau_nd, MARGIN = 1, FUN = mean),
  mulocat = apply(samps.j$mulocat, MARGIN = 1, FUN = mean)
)
)
#    names(dimnames(conc_param$lenp)) <- c("Fish","Metaparam")
#    names(dimnames(conc_param$lenp)) <- c("Fish","Metaparam")
Line 660: Line 756:
colnames(conc_param)[colnames(conc_param)=="value"] <- "Result"
colnames(conc_param)[colnames(conc_param)=="value"] <- "Result"
colnames(conc_param)[colnames(conc_param)=="L1"] <- "Parameter"
colnames(conc_param)[colnames(conc_param)=="L1"] <- "Parameter"
conc_param$Compound[conc_param$Parameter =="tau_nd"] <- conl_nd # drops out for some reason
conc_param$Compound[conc_param$Parameter =="tau_nd"] <- conl_nd # drops out because one-dimensional
conc_param <- fillna(conc_param,"Fish")
conc_param$Area[conc_param$Parameter =="mulocat"] <- locl # drops out because one-dimensional
conc_param <- fillna(conc_param,c("Fish","Area"))
for(i in 1:ncol(conc_param)) {
for(i in 1:ncol(conc_param)) {
   if("factor" %in% class(conc_param[[i]])) conc_param[[i]] <- as.character(conc_param[[i]])
   if("factor" %in% class(conc_param[[i]])) conc_param[[i]] <- as.character(conc_param[[i]])
Line 668: Line 765:


objects.store(conc_param)
objects.store(conc_param)
cat("Data frame conc_params stored.\n")
cat("Ovariable conc_param stored.\n")


######################3
######################3
Line 682: Line 779:
#))
#))


tmp <- eu2[eu2$Compound %in% c("PCDDF","PCB","BDE153","PBB153","PFOA","PFOS","DBT","MBT","TBT"),]@output
#tmp <- euw[euw$Compound %in% c("PCDDF","PCB","BDE153","PBB153","PFOA","PFOS","DBT","MBT","TBT"),]
ggplot(tmp, aes(x = eu2Result, colour=Fish))+stat_ecdf()+
#ggplot(tmp, aes(x = eu2Result, colour=Fish))+stat_ecdf()+
  facet_wrap( ~ Compound, scales="free_x")+scale_x_log10()
facet_wrap( ~ Compound, scales="free_x")+scale_x_log10()
 
dimnames(samps.j$mulocat)


scatterplotMatrix(t(exp(samps.j$pred[2,,,1])), main = paste("Predictions for several compounds for",
scatterplotMatrix(t(exp(samps.j$pred[2,,,1])), main = paste("Predictions for several compounds for",
Line 694: Line 793:
scatterplotMatrix(t((samps.j$pred_nd[1,,,1])), main = paste("Predictions for several compounds for",
scatterplotMatrix(t((samps.j$pred_nd[1,,,1])), main = paste("Predictions for several compounds for",
                                                             names(samps.j$pred_nd[,1,1,1])[1]))
                                                             names(samps.j$pred_nd[,1,1,1])[1]))
#scatterplotMatrix(t((samps.j$mulocat[,,1])), main = paste("Predictions for location average difference",
#                                                            names(samps.j$pred_nd[,1,1,1])[1]))


#plot(coda.samples(jags, 'Omega', N))
#plot(coda.samples(jags, 'Omega', N))
Line 701: Line 803:
plot(coda.samples(jags, 'pred', N*thin, thin))
plot(coda.samples(jags, 'pred', N*thin, thin))
plot(coda.samples(jags, 'mu_nd', N*thin, thin))
plot(coda.samples(jags, 'mu_nd', N*thin, thin))
plot(coda.samples(jags, 'mulocat', N*thin, thin))
tst <- (coda.samples(jags, 'pred', N))
tst <- (coda.samples(jags, 'pred', N))
</rcode>
</rcode>


===== Initiate conc_poll=====
<rcode name="conc_poll" label="Initiate conc_poll" embed=1>
<rcode name="conc_poll" label="Initiate conc_poll" embed=1>
#This is code Op_en3104/conc_poll on page [[EU-kalat]]
#This is code Op_en3104/conc_poll on page [[EU-kalat]]


library(OpasnetUtils)
library(OpasnetUtils)
#objects.latest("Op_en3104", code_name="pollutant_bayes")


conc_poll <- Ovariable(
conc_poll <- Ovariable(
Line 728: Line 830:
     out <- data.frame()
     out <- data.frame()
     for(i in 1:nrow(tmp2)) {
     for(i in 1:nrow(tmp2)) {
     
      ############## PCDDF (with multivariate mvnorm)
     
       tmp <- tmp3[tmp3$Row == i , ]
       tmp <- tmp3[tmp3$Row == i , ]
       Omega <- solve(tapply( # Is it sure that PCDDF and PCB are not mixed to wrong order?
       Omega <- solve(tapply(
         tmp$conc_paramResult[tmp$Parameter=="Omega"],
         tmp$conc_paramResult[tmp$Parameter=="Omega"],
         tmp[tmp$Parameter=="Omega", c("Compound","Compound2")],
         tmp[tmp$Parameter=="Omega", c("Compound","Compound2")],
Line 748: Line 853:
       rnd <- exp(mvrnorm(1, mu, Omega))
       rnd <- exp(mvrnorm(1, mu, Omega))
       out <- rbind(out, merge(tmp2[i,], data.frame(Compound=con,Result=rnd)))
       out <- rbind(out, merge(tmp2[i,], data.frame(Compound=con,Result=rnd)))
     
      #################### PFAS etc (with univariate norm)
      con <- tmp$Compound[tmp$Parameter=="mu_nd"]
      mu <- tmp$conc_paramResult[tmp$Parameter=="mu_nd"]
      tau <- tmp$conc_paramResult[tmp$Parameter=="tau_nd"][match(con,tmp$Compound[tmp$Parameter=="tau_nd"])]
      mulocat <- tmp$conc_paramResult[tmp$Parameter=="mulocat"]
      for(j in 1:length(con)) {
        rnd <- exp(rnorm(1 , mu[j] + mulocat , tau[j]))
        out <- rbind(out,
                    data.frame(tmp2[i,],Compound = con[j],Result = rnd)
                    )
      }
     }
     }
     out$Row <- NULL
     out$Row <- NULL
Line 766: Line 883:
objects.store(conc_poll)
objects.store(conc_poll)
cat("Ovariable conc_poll stored.\n")
cat("Ovariable conc_poll stored.\n")
</rcode>
NOTE! This is not a probabilistic approach. Species and area-specific distributions should be created.
<rcode name="pcddf_mean" label="Initiate conc_pcddf (for developers only)" embed=1>
# This is code Op_en3104/pcddf_mean on page [[EU-kalat]]
library(OpasnetUtils)
conc_pcddf_raw <- Ovariable("conc_pcddf_raw", ddata="Op_en3104", subset="POPs")
conc_pcddf <- Ovariable(
  "conc_pcddf",
  dependencies = data.frame(Name=c("conc_pcddf_raw","TEF"),Ident=c(NA,"Op_en4017/initiate")), # [[Toxic equivalency factor]]
  formula = function(...) {
    df <- conc_pcddf_raw # [[EU-kalat]]
    df <- df[df$Matrix=="Muscle" & df$Catch_site %in% c("Baltic Sea", "Helsinki, Vanhankaupunginlahti Bay"),
            c(1,3,4,6,18)]
    colnames(df@output)[1:4] <- c("Sample","Compound","Fish","Area")
#    df <- Ovariable("df",data=df, unit="pg/g fresh weight")
   
    out <- df * TEF
    out <- oapply(out,c("Sample","Fish","Area"),sum) # Sum over congeners
    out <- oapply(out,"Fish",mean) # Average over samples
    return(out)
  },
  unit="pg/g fresh weight"
)
objects.store(conc_pcddf, conc_pcddf_raw)
cat("Ovariables conc_pcddf, conc_pcddf_raw stored.\n")
</rcode>
</rcode>



Latest revision as of 09:04, 17 March 2021


EU-kalat is a study, where concentrations of PCDD/Fs, PCBs, PBDEs and heavy metals have been measured from fish

Question

The scope of EU-kalat study was to measure concentrations of persistent organic pollutants (POPs) including dioxin (PCDD/F), PCB and BDE in fish from Baltic sea and Finnish inland lakes and rivers. [1] [2] [3].

Answer

Dioxin concentrations in Baltic herring.

The original sample results can be acquired from Opasnet base. The study showed that levels of PCDD/Fs and PCBs depends especially on the fish species. Highest levels were on salmon and large sized herring. Levels of PCDD/Fs exceeded maximum level of 4 pg TEQ/g fw multiple times. Levels of PCDD/Fs were correlated positively with age of the fish.

Mean congener concentrations as WHO2005-TEQ in Baltic herring can be printed out with this link or by running the codel below.

+ Show code

Rationale

Data

Data was collected between 2009-2010. The study contains years, tissue type, fish species, and fat content for each concentration measurement. Number of observations is 285.

There is a new study EU-kalat 3, which will produce results in 2016.

Calculations

Preprocess

  • Preprocess model 22.2.2017 [4]
  • Model run 25.1.2017 [5]
  • Model run 22.5.2017 with new ovariables euRaw, euAll, euMain, and euRatio [6]
  • Model run 23.5.2017 with adjusted ovariables euRaw, eu, euRatio [7]
  • Model run 11.10.2017: Small herring and Large herring added as new species [8]
  • Model rerun 15.11.2017 because the previous stored run was lost in update [9]
  • Model run 21.3.2018: Small and large herring replaced by actual fish length [10]
  • Model run 26.3.2018 eu2 moved here [11]

See an updated version of preprocess code for eu on Health effects of Baltic herring and salmon: a benefit-risk assessment#Code for estimating TEQ from chinese PCB7

+ Show code

Bayes model for dioxin concentrations

  • Model run 28.2.2017 [12]
  • Model run 28.2.2017 with corrected survey model [13]
  • Model run 28.2.2017 with Mu estimates [14]
  • Model run 1.3.2017 [15]
  • Model run 23.4.2017 [16] produces list conc.param and ovariable concentration
  • Model run 24.4.2017 [17]
  • Model run 19.5.2017 without ovariable concentration [18] ⇤--#: . The model does not mix well, so the results should not be used for final results. --Jouni (talk) 19:37, 19 May 2017 (UTC) (type: truth; paradigms: science: attack)
----#: . Maybe we should just estimate TEQs until the problem is fixed. --Jouni (talk) 19:37, 19 May 2017 (UTC) (type: truth; paradigms: science: comment)
  • Model run 22.5.2017 with TEQdx and TEQpcb as the only Compounds [19]
  • Model run 23.5.2017 debugged [20] [21] [22]
  • Model run 24.5.2017 TEQdx, TECpcb -> PCDDF, PCB [23]
  • Model run 11.10.2017 with small and large herring [24] (removed in update)
  • Model run 12.3.2018: bugs fixed with data used in Bayes. In addition, redundant fish species removed and Omega assumed to be the same for herring and salmon. [25]
  • Model run 22.3.2018 [26] Model does not mix well. Thinning gives little help?
  • Model run 25.3.2018 with conc.param as ovariable [27]

+ Show code

Initiate conc_pcddf for PFAS disease burden study

Initiate euw data.frame

This code is similar to preprocess but is better and includes PFAS concentrations from op_fi:PFAS-yhdisteiden tautitaakka. It produces data.frame euw that is the EU-kalat + PFAS data in wide format and, for PFAS but not EU-kalat, a sampled value for measurements below the level of quantification.

+ Show code

Initiate conc_param using Bayesian approach

Bayesian approach for PCDDF, PCB, OT, PFAS.

  • Model run 2021-03-08 [28]
  • Model run 2021-03-08 [29] with the fish needed in PFAS assessment
  • Model run 2021-03-12 [30] using euw
  • Model run 2021-03-13 [31] with location parameter for PFAS
  • Model run 2021-03-17 [32] location parameter not plotted because problems with older R version in Opasnet.

+ Show code

Initiate conc_poll

+ Show code

Initiate conc_pcddf for Goherr

  • Model run 19.5.2017 [33]
  • Model run 23.5.2017 with bugs fixed [34]
  • Model run 12.10.2017: TEQ calculation added [35]
  • Model rerun 15.11.2017 because the previous stored run was lost in update [36]
  • 12.3.2018 adjusted to match the same Omega for all fish species [37]
  • 26.3.2018 includes length and time as parameters, lengt ovariable initiated here [38]

+ Show code

⇤--#: . These codes should be coherent with POPs in Baltic herring. --Jouni (talk) 12:14, 7 June 2017 (UTC) (type: truth; paradigms: science: attack)

See also

References

  1. A. Hallikainen, H. Kiviranta, P. Isosaari, T. Vartiainen, R. Parmanne, P.J. Vuorinen: Kotimaisen järvi- ja merikalan dioksiinien, furaanien, dioksiinien kaltaisten PCB-yhdisteiden ja polybromattujen difenyylieettereiden pitoisuudet. Elintarvikeviraston julkaisuja 1/2004. [1]
  2. E-R.Venäläinen, A. Hallikainen, R. Parmanne, P.J. Vuorinen: Kotimaisen järvi- ja merikalan raskasmetallipitoisuudet. Elintarvikeviraston julkaisuja 3/2004. [2]
  3. Anja Hallikainen, Riikka Airaksinen, Panu Rantakokko, Jani Koponen, Jaakko Mannio, Pekka J. Vuorinen, Timo Jääskeläinen, Hannu Kiviranta. Itämeren kalan ja muun kotimaisen kalan ympäristömyrkyt: PCDD/F-, PCB-, PBDE-, PFC- ja OT-yhdisteet. Eviran tutkimuksia 2/2011. ISSN 1797-2981 ISBN 978-952-225-083-4 [3]