Aşağıdaki deneysel tasarımdan verilerim var: gözlemlerim, her biri bireylerden oluşan iki grup için , tedavilerden, her bir faktör kombinasyonunda replikatların bulunduğu K
, karşılık gelen sayıda denemeden ( N
) başarıların sayısı ( ) sayımıdır. . Burada T *, R * * Bu yüzden, tamamen bir 2 var K 'nin ve mukabil N s'.I
T
R
Veriler biyolojiden alınmıştır. Her birey, iki alternatif formun (alternatif ekleme adı verilen bir fenomen nedeniyle) ifade seviyesini ölçtüğüm bir gendir. Dolayısıyla, K , formlardan birinin ifade seviyesidir ve N , iki formun ifade seviyelerinin toplamıdır. Tek bir ifade kopyada iki form arasında seçim dolayısıyla bir Bernoulli deney olduğu varsayılır K dışına Nkopyaları bir binom izler. Her grup ~ 20 farklı genden oluşur ve her gruptaki genler, iki grup arasında farklı olan bazı ortak fonksiyonlara sahiptir. Her gruptaki her bir gen için üç farklı dokunun (tedaviler) her birinden yaklaşık 30 ölçüm yaptım. Grup ve tedavinin K / N varyansı üzerindeki etkisini tahmin etmek istiyorum.
Gen ekspresyonunun aşırı dağıldığı bilinmektedir, bu nedenle aşağıdaki kodda negatif binom kullanımı.
Örneğin, R
simüle edilen verilerin kodu:
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
}
Grup ve tedavinin başarı olasılıklarının dağılımı (veya varyansı) üzerindeki etkilerini tahmin etmekle ilgileniyorum K/N
. Bu nedenle, yanıtın K / N olduğu uygun bir glm arıyorum, ancak yanıtın beklenen değerini modellemeye ek olarak, yanıtın varyansı da modellenir.
Açıkça, bir binom başarı olasılığının varyansı, denemelerin sayısından ve altta yatan başarı olasılığından etkilenir (denemelerin sayısı ne kadar yüksek olursa ve temel başarı olasılığı ne kadar aşırı olursa (yani 0 veya 1'e yakın), başarı olasılığının varyansı), bu yüzden esas olarak grup ve tedavinin, deneme sayısının ve altta yatan başarı olasılığının ötesinde katkılarıyla ilgileniyorum. Arcsin karekök dönüşümünü yanıta uygulamak, ikincisini ortadan kaldıracaktır, ancak deneme sayısının sayısını ortadan kaldırmayacaktır.
Simüle edilmiş örnek veride tasarımın dengeli olmasına rağmen (iki grubun her birinde eşit sayıda birey ve her tedavide her bir gruptaki her bir kişide aynı sayıda replikat), gerçek verilerimde değil - iki grup eşit sayıda kişiye sahip değildir ve yineleme sayısı değişir. Ayrıca, bireyin rastgele bir etki olarak ayarlanması gerektiğini düşünürüm.
Her bireyin tahmin edilen başarı olasılığının (p hat = K / N olarak ifade edilir) örnek varyansına karşı örnek varyansının çizilmesi, aşırı başarı olasılıklarının daha düşük varyansa sahip olduğunu göstermektedir:
Bu, tahmini başarı olasılıkları arcsin karekök varyans stabilize edici dönüşüm (arcsin (sqrt (p hat)) olarak gösterilir) kullanılarak dönüştürüldüğünde ortadan kaldırılır:
Dönüştürülen tahmini başarı olasılıklarının örnek varyansının ortalama N ile karşılaştırılması, beklenen negatif ilişkiyi gösterir:
İki grup için dönüştürülmüş tahmini başarı olasılıklarının örnek varyansını çizmek, b grubunun biraz daha yüksek varyanslara sahip olduğunu gösterir, bu da verileri nasıl simüle ettiğimi gösterir:
Son olarak, üç tedavi için dönüştürülmüş tahmini başarı olasılıklarının örnek varyansının çizilmesi, tedaviler arasında hiçbir fark göstermemektedir, bu da verileri nasıl simüle ettiğimi göstermektedir:
Grubu ölçebileceğim ve başarı olasılıklarının varyansı üzerindeki tedavi etkilerini genelleştirebileceğim herhangi bir genelleştirilmiş doğrusal model var mı?
Belki de heteroscedastik genelleştirilmiş doğrusal model veya bir çeşit doğrusal doğrusal model?
E (y) = Xβ'ye ek olarak Varyans (y) = Zλ'yı modelleyen bir modelin satırlarında, Z ve X sırasıyla ortalama ve varyansın regresörleridir, benim durumumda aynı olacak ve tedavi (t.1, t.2 ve t.3 seviyeleri) ve grup (a ve b seviyeleri) ve muhtemelen N ve R ve dolayısıyla λ ve β ilgili etkilerini tahmin edecektir.
Alternatif olarak, sadece yanıtın beklenen değerini modelleyen bir glm kullanarak, her tedavide her bir gruptan her genin replikatları arasındaki örnek varyanslarına bir model sığdırabilirim. Buradaki tek soru, farklı genlerin farklı sayıda kopyaya sahip olduğu gerçeğini nasıl açıklayacağımızdır. Bence bir glm ağırlıkları (daha fazla çoğaltmaya dayalı örnek varyansları daha yüksek bir ağırlık olması gerekir) bunu açıklayabilir ama tam olarak hangi ağırlıkları ayarlanmalıdır?
Not: dglm
R paketini kullanmayı denedim :
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
Dglm'ye göre grup etkisi. Uyum oldukça zayıf. Modelin doğru ayarlandığını veya bu modelin sahip olduğu güç olup olmadığını merak ediyorum.