Tôi có dữ liệu từ thiết kế thử nghiệm sau: các quan sát của tôi là số lượng thành công ( K
) trong số các thử nghiệm tương ứng ( N
), được đo cho hai nhóm, mỗi nhóm bao gồm các I
cá nhân, từ các T
phương pháp điều trị, trong đó mỗi kết hợp các yếu tố đó đều có các R
bản sao . Do đó, hoàn toàn tôi có 2 * I * T * R K 'và N tương ứng .
Các dữ liệu là từ sinh học. Mỗi cá nhân là một gen mà tôi đo mức độ biểu hiện của hai dạng thay thế (do một hiện tượng gọi là ghép nối thay thế). Do đó, K là mức biểu thức của một trong các dạng và N là tổng các mức biểu thức của hai dạng. Sự lựa chọn giữa hai hình thức trong một bản sao được thể hiện duy nhất được giả định là một thử nghiệm Bernoulli, do đó K ra khỏi Nbản sao sau một nhị thức. Mỗi nhóm bao gồm ~ 20 gen khác nhau và các gen trong mỗi nhóm có một số chức năng chung, khác nhau giữa hai nhóm. Đối với mỗi gen trong mỗi nhóm, tôi có ~ 30 phép đo như vậy từ mỗi ba mô khác nhau (phương pháp điều trị). Tôi muốn ước tính ảnh hưởng của nhóm và phương pháp điều trị đối với phương sai của K / N.
Biểu hiện gen được biết là quá mức do đó sử dụng nhị thức âm trong mã dưới đây.
Ví dụ: R
mã dữ liệu mô phỏng:
library(MASS)
set.seed(1)
I = 20 # individuals in each group
G = 2 # groups
T = 3 # treatments
R = 30 # replicates of each individual, in each group, in each treatment
groups = letters[1:G]
ids = c(sapply(groups, function(g){ paste(rep(g, I), 1:I, sep=".") }))
treatments = paste(rep("t", T), 1:T, sep=".")
# create random mean number of trials for each individual and
# dispersion values to simulate trials from a negative binomial:
mean.trials = rlnorm(length(ids), meanlog=10, sdlog=1)
thetas = 10^6/mean.trials
# create the underlying success probability for each individual:
p.vec = runif(length(ids), min=0, max=1)
# create a dispersion factor for each success probability, where the
# individuals of group 2 have higher dispersion thus creating a group effect:
dispersion.vec = c(runif(length(ids)/2, min=0, max=0.1),
runif(length(ids)/2, min=0, max=0.2))
# create empty an data.frame:
data.df = data.frame(id=rep(sapply(ids, function(i){ rep(i, R) }), T),
group=rep(sapply(groups, function(g){ rep(g, I*R) }), T),
treatment=c(sapply(treatments,
function(t){ rep(t, length(ids)*R) })),
N=rep(NA, length(ids)*T*R),
K=rep(NA, length(ids)*T*R) )
# fill N's and K's - trials and successes
for(i in 1:length(ids)){
N = rnegbin(T*R, mu=mean.trials[i], theta=thetas[i])
probs = runif(T*R, min=max((1-dispersion.vec[i])*p.vec[i],0),
max=min((1+dispersion.vec)*p.vec[i],1))
K = rbinom(T*R, N, probs)
data.df$N[which(as.character(data.df$id) == ids[i])] = N
data.df$K[which(as.character(data.df$id) == ids[i])] = K
}
Tôi quan tâm đến việc ước tính các tác động của nhóm và điều trị đối với sự phân tán (hoặc phương sai) của xác suất thành công (nghĩa là K/N
). Do đó, tôi đang tìm kiếm một glm thích hợp trong đó phản hồi là K / N nhưng ngoài việc mô hình hóa giá trị mong đợi của phản hồi, phương sai của phản hồi cũng được mô hình hóa.
Rõ ràng, phương sai của xác suất thành công nhị thức bị ảnh hưởng bởi số lượng thử nghiệm và xác suất thành công cơ bản (số lượng thử nghiệm càng cao và xác suất thành công cơ bản càng cao (tức là gần 0 hoặc 1), càng thấp phương sai của xác suất thành công), vì vậy tôi chủ yếu quan tâm đến sự đóng góp của nhóm và điều trị vượt quá số lượng thử nghiệm và xác suất thành công cơ bản. Tôi đoán việc áp dụng chuyển đổi căn bậc hai arcsin cho phản ứng sẽ loại bỏ cái sau nhưng không phải là số lượng thử nghiệm.
Mặc dù trong dữ liệu ví dụ mô phỏng ở trên thiết kế được cân bằng (số lượng cá thể bằng nhau ở mỗi trong hai nhóm và số lần lặp lại giống hệt nhau ở mỗi cá nhân từ mỗi nhóm trong mỗi điều trị), nhưng trong dữ liệu thực của tôi thì không - hai nhóm thực hiện không có số lượng cá thể bằng nhau và số lần lặp lại khác nhau. Ngoài ra, tôi tưởng tượng cá nhân nên được đặt thành một hiệu ứng ngẫu nhiên.
Vẽ phương sai mẫu so với giá trị trung bình mẫu của xác suất thành công ước tính (ký hiệu là p hat = K / N) của mỗi cá nhân minh họa rằng xác suất thành công cực đoan có phương sai thấp hơn:
Điều này được loại bỏ khi xác suất thành công ước tính được chuyển đổi bằng cách sử dụng phép biến đổi ổn định phương sai căn bậc hai arcsin (ký hiệu là arcsin (sqrt (p hat)):
Vẽ phương sai mẫu của xác suất thành công ước tính được chuyển đổi so với giá trị trung bình N cho thấy mối quan hệ tiêu cực dự kiến:
Vẽ phương sai mẫu của xác suất thành công ước tính được chuyển đổi cho hai nhóm cho thấy nhóm b có phương sai cao hơn một chút, đó là cách tôi mô phỏng dữ liệu:
Cuối cùng, vẽ sơ đồ phương sai mẫu của xác suất thành công ước tính được chuyển đổi cho ba phương pháp điều trị cho thấy không có sự khác biệt giữa các phương pháp điều trị, đó là cách tôi mô phỏng dữ liệu:
Có bất kỳ hình thức nào của một mô hình tuyến tính tổng quát mà tôi có thể định lượng nhóm và hiệu quả điều trị đối với phương sai của xác suất thành công không?
Có lẽ một mô hình tuyến tính tổng quát không đồng nhất hoặc một số dạng của mô hình phương sai loglinear?
Một cái gì đó trong các dòng của một mô hình mô hình Phương sai (y) = Zλ ngoài E (y) = Xβ, trong đó Z và X là các biến hồi quy của giá trị trung bình và phương sai, trong trường hợp của tôi sẽ giống hệt nhau và bao gồm điều trị (mức t.1, t.2 và t.3) và nhóm (cấp a và b), và có thể là N và R, và do đó và sẽ ước tính tác dụng tương ứng của chúng.
Ngoài ra, tôi có thể điều chỉnh một mô hình cho các phương sai mẫu trên các lần sao chép của từng gen từ mỗi nhóm trong mỗi lần điều trị, bằng cách sử dụng mô hình chỉ mô hình giá trị mong đợi của phản ứng. Câu hỏi duy nhất ở đây là làm thế nào để giải thích cho thực tế là các gen khác nhau có số lần sao chép khác nhau. Tôi nghĩ rằng các trọng số trong một glm có thể giải thích cho điều đó (phương sai mẫu dựa trên nhiều lần lặp lại nên có trọng số cao hơn) nhưng chính xác nên đặt trọng số nào?
Lưu ý: Tôi đã thử sử dụng dglm
gói R:
library(dglm)
dglm.fit = dglm(formula = K/N ~ 1, dformula = ~ group + treatment, family = quasibinomial, weights = N, data = data.df)
summary(dglm.fit)
Call: dglm(formula = K/N ~ 1, dformula = ~group + treatment, family = quasibinomial,
data = data.df, weights = N)
Mean Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.09735366 0.01648905 -5.904138 3.873478e-09
(Dispersion Parameters for quasibinomial family estimated as below )
Scaled Null Deviance: 3600 on 3599 degrees of freedom
Scaled Residual Deviance: 3600 on 3599 degrees of freedom
Dispersion Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 9.140517930 0.04409586 207.28746254 0.0000000
group -0.071009599 0.04714045 -1.50634107 0.1319796
treatment -0.001469108 0.02886751 -0.05089138 0.9594121
(Dispersion parameter for Gamma family taken to be 2 )
Scaled Null Deviance: 3561.3 on 3599 degrees of freedom
Scaled Residual Deviance: 3559.028 on 3597 degrees of freedom
Minus Twice the Log-Likelihood: 29.44568
Number of Alternating Iterations: 5
Hiệu ứng nhóm theo dglm.fit khá yếu. Tôi tự hỏi nếu mô hình được đặt đúng hoặc sức mạnh mà mô hình này có.