EU-kalat: Difference between revisions

From Opasnet
Jump to navigation Jump to search
Line 457: Line 457:
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


<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_pcddf with PFAS, OT (for developers only)" embed=0 graphics=1>
Line 516: Line 517:
eu3$PFAS <- eu3$PFOA + eu3$PFOS
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")
eu4 <- eu3[rowSums(is.na(eu3[conl_nd]))<7 , c(1:5,match(conl_nd,colnames(eu3)))]
conl_nd <- c("PFAS","PFOS","TBT")
fisl_nd <- as.character(unique(eu4$Fish))
fisl <- fisl_nd <- c("Baltic herring","Bream","Flounder","Perch","Roach","Salmon","Whitefish")
conc_nd <- add_loq(eu4[6:ncol(eu4)])


eu3 <- eu3[!is.na(eu3$PCDDF) , !colnames(eu3) %in% conl_nd]
eu4 <- eu3[rowSums(is.na(eu3[conl_nd]))<length(conl_nd) & eu3$Fish %in% fisl_nd ,
conl <- colnames(eu3)[-(1:5)]
          c(1:5,match(conl_nd,colnames(eu3)))]
fisl <- as.character(unique(eu3$Fish))
#fisl_nd <- as.character(unique(eu4$Fish))
 
conc_nd <- add_loq(eu4[eu4$Fish %in% fisl_nd , 6:ncol(eu4)])
 
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)))]
#conl <- colnames(eu3)[-(1:5)]
#fisl <- as.character(unique(eu3$Fish))


oprint(head(eu3))
oprint(head(eu3))
Line 531: Line 538:
Fi <- length(fisl)
Fi <- length(fisl)
N <- 200
N <- 200
thin <- 100
conl
conl
fisl
fisl
conl_nd
fisl_nd


conc <- add_loq(eu3[rowSums(is.na(eu3))==0 , 6:ncol(eu3)]) # Remove rows with missing data.
conc <- add_loq(eu3[rowSums(is.na(eu3))==0 , 6:ncol(eu3)]) # Remove rows with missing data.
Line 569: Line 579:
     }
     }
     # Non-dioxins
     # Non-dioxins
     for(i in 1:Fi_nd) { # Fi = fish species
     for(j in 1:C_nd) {
       for(j in 1:C_nd) {
      tau_nd[j] ~ dgamma(0.001,0.001)
       for(i in 1:Fi_nd) { # Fi = fish species
         pred_nd[i,j] ~ dnorm(mu[i,j], tau_nd[j])
         pred_nd[i,j] ~ dnorm(mu[i,j], tau_nd[j])
         mu_nd[i,j] ~ dnorm(0, 0.0001)
         mu_nd[i,j] ~ dnorm(0, 0.0001)
       }
       }
    }
    for(j in 1:C_nd) {
      tau_nd[j] ~ dgamma(0.001,0.001)
     }
     }
   }
   }
Line 604: Line 612:
)
)


update(jags, 100)
update(jags, 1000)


samps.j <- jags.samples(
samps.j <- jags.samples(
Line 618: Line 626:
     'tau_nd'
     'tau_nd'
   ),  
   ),  
   thin=1000,
   thin=thin,
   N
   N*thin
)
)
dimnames(samps.j$Omega) <- list(Fish = fisl, Compound = conl, Compound2 = conl, Iter=1:N, Chain=1:4)
dimnames(samps.j$Omega) <- list(Fish = fisl, Compound = conl, Compound2 = conl, Iter=1:N, Chain=1:4)
Line 652: Line 660:
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


objects.store(conc.param)
objects.store(conc.param)
Line 672: Line 681:
   facet_wrap( ~ Compound, scales="free_x")+scale_x_log10()
   facet_wrap( ~ Compound, scales="free_x")+scale_x_log10()


   scatterplotMatrix(t(exp(samps.j$pred[2,1:10,,1])), main = paste("Predictions for several compounds for",
   scatterplotMatrix(t(exp(samps.j$pred[2,,,1])), main = paste("Predictions for several compounds for",
     names(samps.j$pred[,1,1,1])[2]))
     names(samps.j$pred[,1,1,1])[2]))
   scatterplotMatrix(t(exp(samps.j$pred[,70,,1])), main = paste("Predictions for all fish species for",
   scatterplotMatrix(t(exp(samps.j$pred[,1,,1])), main = paste("Predictions for all fish species for",
     names(samps.j$pred[1,,1,1])[70]))
     names(samps.j$pred[1,,1,1])[1]))
   scatterplotMatrix(t(samps.j$Omega[2,1:10,1,,1]), main = "Omega for several compounds in Baltic herring")
   scatterplotMatrix(t(samps.j$Omega[2,,1,,1]), main = "Omega for several compounds in Baltic herring")


   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",
Line 682: Line 691:
    
    
   #plot(coda.samples(jags, 'Omega', N))
   #plot(coda.samples(jags, 'Omega', N))
   #plot(coda.samples(jags, 'mu', N))
   plot(coda.samples(jags, 'mu', N*thin, thin))
   #plot(coda.samples(jags, 'lenp', N))
   #plot(coda.samples(jags, 'lenp', N))
   #plot(coda.samples(jags, 'timep', N))
   #plot(coda.samples(jags, 'timep', N))
# tst <- (coda.samples(jags, 'pred_nd', N))
  plot(coda.samples(jags, 'pred', N*thin, thin))
  plot(coda.samples(jags, 'mu_nd', N*thin, thin))
  tst <- (coda.samples(jags, 'pred', N))
</rcode>
</rcode>



Revision as of 20:26, 8 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

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

+ Show code


NOTE! This is not a probabilistic approach. Species and area-specific distributions should be created.

+ Show code

Initiate conc_pcddf for Goherr

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

+ 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]