Kết hợp dữ liệu từ các nguồn khác nhau


8

Tôi muốn kết hợp dữ liệu từ các nguồn khác nhau.

Giả sử tôi muốn ước tính một thuộc tính hóa học (ví dụ: hệ số phân vùng ):

Tôi có một số dữ liệu thực nghiệm, thay đổi do lỗi đo lường xung quanh giá trị trung bình.

Và, thứ hai, tôi có một mô hình dự đoán một ước tính từ các thông tin khác (mô hình cũng có một số điểm không chắc chắn).

Làm thế nào tôi có thể kết hợp hai bộ dữ liệu đó? [Ước tính kết hợp sẽ được sử dụng trong một mô hình khác như dự đoán].

Phương pháp phân tích tổng hợp và bayes dường như là phù hợp. Tuy nhiên, không tìm thấy nhiều tài liệu tham khảo và ý tưởng về cách triển khai nó (Tôi đang sử dụng R, nhưng cũng quen thuộc với python và C ++).

Cảm ơn.

Cập nhật

Ok, đây là một ví dụ thực tế hơn:

Để ước tính độc tính của một hóa chất (thường được biểu thị bằng = nồng độ trong đó 50% động vật chết) các thí nghiệm trong phòng thí nghiệm được tiến hành. Hạnh phúc là kết quả của các thí nghiệm được thu thập trong cơ sở dữ liệu (EPA) .LC50

Dưới đây là một số giá trị cho thuốc trừ sâu Lindane :

### Toxicity of Lindane in ug/L
epa <- c(850 ,6300 ,6500 ,8000, 1990 ,516, 6442 ,1870, 1870, 2000 ,250 ,62000,
         2600,1000,485,1190,1790,390,1790,750000,1000,800
)
hist(log10(epa))

# or in mol / L
# molecular weight of Lindane
mw = 290.83 # [g/mol]
hist(log10(epa/ (mw * 1000000)))

Tuy nhiên, cũng có một số mô hình có sẵn để dự đoán độc tính từ các tính chất hóa học ( QSAR ). Một trong những mô hình này dự đoán độc tính từ hệ số phân chia octanol / nước ( ):tôiog KÔiW

tôiog LC50[motôi/L]= =0,94 (±0,03) tôiog KÔiW - 1,33(± 0,1)

Hệ số phân chia của Lindane là và độc tính dự đoán là .l o g L C 50 [ m o l / L ] = - 4.902tôiog KÔiW= =3,8tôiog LC50[motôi/L]= =-4.902

lkow = 3.8
mod1 <- -0.94 * lkow - 1.33
mod1

Có cách nào hay để kết hợp hai thông tin khác nhau này (thí nghiệm trong phòng thí nghiệm và dự đoán mô hình) không?

hist(log10(epa/ (mw * 1000000)))
abline(v = mod1, col = 'steelblue')

kết hợp sẽ được sử dụng sau này trong mô hình làm công cụ dự đoán. Do đó, một giá trị (kết hợp) sẽ là một giải pháp đơn giản.LC50

Tuy nhiên, một bản phân phối cũng có thể có ích - nếu điều này là có thể trong mô hình hóa (làm thế nào?).


2
Mặc dù những người khác có thể tìm thấy đủ ở đây để trả lời, tôi chưa thấy rằng có đủ thông tin để hỗ trợ câu trả lời có lý do. Có thể cụ thể hơn một chút về dữ liệu bạn dự định kết hợp không?
whuber

@whuber: Cảm ơn đã bình luận. Tôi đã thêm một ví dụ cụ thể hơn và hy vọng điều này làm rõ những gì tôi đang tìm kiếm.
EDi

Việc làm rõ là hữu ích - cảm ơn bạn. Nhưng bạn có thể thêm một vài từ về kết quả của một "sự kết hợp" của những kết quả này sẽ là gì không? Nó sẽ là một ? Một loạt chúng? Một khoảng tin cậy cho họ? Một đánh giá về dự đoán dường như làm việc tốt như thế nào? Thứ gì khác? Và, bất kể chúng được kết hợp như thế nào, cuối cùng, sự quan tâm sẽ tập trung vào việc sử dụng thông tin để đưa ra quyết định, chẳng hạn như điều chỉnh việc sản xuất, sử dụng hoặc xử lý hóa chất. Làm thế nào những quyết định này được đưa ra thường có một (mạnh mẽ) về phương pháp kết hợp thích hợp để sử dụng. LC50LC50
whuber

Âm thanh như bạn có thể áp dụng một trong những cách tiếp cận ước tính trước mà tôi đã phát triển ở đây , với các ví dụ trong prors_demo.Rmd này .
David LeBauer

@David. Cảm ơn vì bài báo - Tôi sẽ xem qua.
EDi

Câu trả lời:


5

Ước tính mô hình của bạn sẽ là một hữu ích trước.

Tôi đã áp dụng cách tiếp cận sau đây trong LeBauer et al 2013 và đã điều chỉnh mã từ Priors_demo.Rmd bên dưới.

Để tham số hóa trước khi sử dụng mô phỏng, hãy xem xét mô hình của bạn

logLC50= =b0X+b1

b0~N(0,94,0,03)b1~N(1,33,0,1)Lkow

ε~N(0,1)

b0 <- rnorm(1000, -0.94, 0.03)
b1 <- rnorm(1000, -1.33, 0.1)
e <- rnorm(1000, 0, 1)
lkow <- 3.8
theprior <- b0 * lkow + b1 + e

Bây giờ hãy tưởng tượng thepriorlà trước và

thedata <- log10(epa/ (mw * 1000000))

là dữ liệu của bạn:

library(ggplot2)
ggplot() + geom_density(aes(theprior)) + theme_bw() + geom_rug(aes(thedata))

Cách dễ nhất để sử dụng trước là sẽ tham số hóa phân phối mà JAGS sẽ nhận ra.

fitdistrplusN(mean(theprior), sd(theprior))N(-4,9,1,04)N(-4,9,2)

Sau đó, chúng ta có thể phù hợp với một mô hình bằng cách sử dụng JAGS

writeLines(con = "mymodel.bug",
           text = "
           model{
             for(k in 1:length(Y)) {
               Y[k] ~ dnorm(mu, tau)
             }

             # informative prior on mu
             mu ~ dnorm(-4.9, 0.25) # precision tau = 1/variance
             # weak prior 
             tau ~ dgamma(0.01, 0.01)
             sd <- 1 / sqrt(tau)
           }")

require(rjags)
j.model  <- jags.model(file = "mymodel.bug", 
                                  data = data.frame(Y = thedata), 
                                  n.adapt = 500, 
                                  n.chains = 4)
mcmc.object <- coda.samples(model = j.model, variable.names = c('mu', 'tau'),
                            n.iter = 10000)
library(ggmcmc)

## look at diagnostics
ggmcmc(ggs(mcmc.object), file = NULL)

## good convergence, but can start half-way through the simulation
mcmc.o     <- window(mcmc.object, start = 10000/2)
summary(mcmc.o)

Cuối cùng, một âm mưu:

ggplot() + theme_bw() + xlab("mu") + 
     geom_density(aes(theprior), color = "grey") + 
     geom_rug(aes(thedata)) + 
     geom_density(aes(unlist(mcmc.o[,"mu"])), color = "pink") +
     geom_density(aes(unlist(mcmc.o[,"pred"])), color = "red")

Và bạn có thể coi mu=5.08là ước tính của bạn về giá trị tham số trung bình (màu hồng) và sd = 0.8độ lệch chuẩn của nó; ước tính dự đoán sau của logLC_50 (nơi bạn lấy mẫu từ đó) có màu đỏ.

nhập mô tả hình ảnh ở đây

Tài liệu tham khảo

LeBauer, DS, D. Wang, K. Richter, C. Davidson và MC Dietze. (2013). Tạo thuận lợi cho các phản hồi giữa các phép đo tại hiện trường và các mô hình hệ sinh thái. Chuyên khảo sinh thái 83: 133 Công ty 154. doi: 10.1890 / 12-0137.1


Tôi nên thay -1,33 bằng b1 trong tính toán trước, nhưng tôi không có thời gian để sửa nó ngay bây giờ. Nó sẽ không làm cho nhiều sự khác biệt.
David LeBauer

@EDi cảm ơn - vui lòng trích dẫn tài liệu tham khảo nếu bạn sử dụng nó!
David LeBauer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.