Montaggio di un modello lineare generalizzato eteroscedastico per le risposte binomiali


9

Ho dati dal seguente disegno sperimentale: le mie osservazioni sono conteggi del numero di successi ( K) rispetto al corrispondente numero di prove ( N), misurato per due gruppi ciascuno composto da Iindividui, da Ttrattamenti, dove in ciascuna di tali combinazioni di fattori ci sono Rrepliche . Quindi, nel complesso, ho 2 * I * T * R K e N corrispondenti .

I dati provengono dalla biologia. Ogni individuo è un gene per il quale misuro il livello di espressione di due forme alternative (a causa di un fenomeno chiamato splicing alternativo). Quindi, K è il livello di espressione di una delle forme e N è la somma dei livelli di espressione delle due forme. Si presume che la scelta tra le due forme in una singola copia espressa sia un esperimento di Bernoulli, quindi K su Nle copie seguono un binomio. Ogni gruppo è composto da ~ 20 geni diversi e i geni di ciascun gruppo hanno una funzione comune, che è diversa tra i due gruppi. Per ogni gene di ciascun gruppo ho ~ 30 misurazioni del genere da ciascuno di tre diversi tessuti (trattamenti). Voglio stimare l'effetto che il gruppo e il trattamento hanno sulla varianza di K / N.

È noto che l'espressione genica è sovradispersa, quindi l'uso del binomio negativo nel codice seguente.

Ad esempio, Rcodice di dati simulati:

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
}

Sono interessato a stimare gli effetti che il gruppo e il trattamento hanno sulla dispersione (o varianza) delle probabilità di successo (cioè K/N). Pertanto sto cercando un glm appropriato in cui la risposta sia K / N ma oltre a modellare il valore atteso della risposta, viene modellata anche la varianza della risposta.

Chiaramente, la varianza di una probabilità di successo binomiale è influenzata dal numero di prove e dalla probabilità di successo sottostante (maggiore è il numero di prove e più estrema è la probabilità di successo sottostante (ovvero, vicino a 0 o 1), più basso è il varianza della probabilità di successo), quindi sono principalmente interessato al contributo del gruppo e del trattamento oltre a quello del numero di prove e della probabilità di successo sottostante. Immagino che l'applicazione della trasformazione della radice quadrata di arcsin alla risposta eliminerà quest'ultima, ma non quella del numero di prove.

Sebbene nell'esempio simulato i dati sopra riportati siano bilanciati (uguale numero di individui in ciascuno dei due gruppi e identico numero di replicati in ciascun individuo di ciascun gruppo in ciascun trattamento), nei miei dati reali non lo è - i due gruppi lo fanno non ha un numero uguale di individui e il numero di repliche varia. Inoltre, immagino che l'individuo debba essere impostato come un effetto casuale.

Tracciare la varianza del campione rispetto alla media del campione della probabilità di successo stimata (indicata con p hat = K / N) di ciascun individuo illustra che le probabilità di successo estremo hanno una varianza inferiore: inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Questo viene eliminato quando le probabilità di successo stimate vengono trasformate usando la trasformazione stabilizzante della varianza della radice quadrata di arcsin (indicata come arcsin (sqrt (p hat)): inserisci qui la descrizione dell'immagine

Tracciare la varianza del campione delle probabilità di successo stimate trasformate rispetto alla media N mostra la relazione negativa attesa: inserisci qui la descrizione dell'immagine

Tracciare la varianza di esempio delle probabilità di successo stimate trasformate per i due gruppi mostra che il gruppo b presenta varianze leggermente più elevate, ed è così che ho simulato i dati: inserisci qui la descrizione dell'immagine

Infine, tracciare la varianza del campione delle probabilità di successo stimate trasformate per i tre trattamenti non mostra alcuna differenza tra i trattamenti, ed è così che ho simulato i dati: inserisci qui la descrizione dell'immagine

Esiste una forma di modello lineare generalizzato con cui posso quantificare gli effetti del gruppo e del trattamento sulla varianza delle probabilità di successo?

Forse un modello lineare generalizzato eteroscedastico o una qualche forma di un modello di varianza loglineare?

Qualcosa nelle linee di un modello che modella la varianza (y) = Zλ oltre a E (y) = Xβ, dove Z e X sono i regressori della media e della varianza, rispettivamente, che nel mio caso saranno identici e includeranno trattamento (livelli t.1, t.2 e t.3) e gruppo (livelli a e b), e probabilmente N e R, e quindi λ e β stimeranno i loro rispettivi effetti.

In alternativa, potrei adattare un modello alle varianze del campione attraverso repliche di ciascun gene di ciascun gruppo in ciascun trattamento, usando un glm che modella solo il valore atteso della risposta. L'unica domanda qui è come spiegare il fatto che geni diversi hanno un numero diverso di replicati. Penso che i pesi in un glm potrebbero spiegarlo (le varianze del campione basate su più repliche dovrebbero avere un peso maggiore) ma esattamente quali pesi dovrebbero essere impostati?

Nota: ho provato ad usare il dglmpacchetto 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 

L'effetto di gruppo secondo dglm.fit è piuttosto debole. Mi chiedo se il modello è impostato correttamente o è il potere di questo modello.


1
Questo è un po 'opaco. Puoi dirmi più specificamente qual è la tua situazione, forse in termini concreti?
gung - Ripristina Monica

1
Ho modificato il mio post. Ma in generale, sto cercando un glm che oltre a E (y) = Xβ, modelli Variance (y) = Zλ, dove le colonne di X sono i regressori per la media della risposta e le colonne di Z sono i regressori per la varianza della risposta e β e λ sono i parametri che stimano i loro effetti sulla media e sulla varianza, rispettivamente.
user1701545

2
Lo raccolgo molto, ma è difficile pensarci in termini così nebulosi. Discutete di nessuna variabile X o Z, ad es. Di cosa tratta il tuo studio? Quali sono i tuoi dati? Ecc.
Gung - Ripristina Monica

Nessun problema: vedi post aggiornato.
user1701545

Risposte:


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.