2017-04-10 2 views
0

Je fais l'analyse statistique pour un ensemble de données utilisant GLM dans R. Fondamentalement, les variables prédictives sont: "Probe" (types de sondes utilisées dans l'expérience - Facteur à 4 niveaux), "Extraction" (types d'extraction utilisés dans l'expérience - Facteur à 2 niveaux), "Tank" (le numéro de réservoir duquel l'échantillon est prélevé - entiers de 1 à 9) et "Dilution" (dilution de chaque numéros d'échantillons: 3,125, 6,25, 12,5, 25, 50, 100). La réponse est le nombre de réponses positives ("Positif") obtenues à partir d'un nombre de répétitions de l'expérience ("Rep"). Je veux évaluer les effets de toutes les variables prédictives (et leurs interactions) sur le nombre de réponses positives, alors j'ai essayé d'adapter un modèle GLM comme ceci:Comment traiter une variable comme un facteur aléatoire dans GLM dans R

y<-cbind(mydata$Positive,mydata$Rep - mydata$Positive) 
model1<-glm(y~Probe*Extraction*Dilution*Tank, family=quasibinomial, data=mydata) 

Mais on m'a dit plus tard par mon superviseur que la La variable de prédiction "Tank" ne doit pas être traitée comme une variable basée sur le niveau. c'est-à-dire qu'il a des valeurs de 1 à 9, mais c'est juste l'étiquette du réservoir, donc la différence entre 1 et, disons, 7 n'est pas importante. Traiter cette variable comme un facteur ne ferait qu'un grand modèle avec de mauvais résultats. Alors, comment traiter la variable "Tank" comme un facteur aléatoire et l'inclure dans le GLM?

Merci

Répondre

1

On l'appelle un «modèle à effets mixtes». Découvrez le paquet lme4.

library(lme4) 
glmer(y~Probe + Extraction + Dilution + (1|Tank), family=quasibinomial, data=mydata) 

De plus, vous devriez probablement utiliser + au lieu de * pour ajouter des facteurs. * inclut toutes les interactions et tous les niveaux de chaque facteur, ce qui conduirait à un énorme modèle de surapprentissage. À moins que vous n'ayez une raison spécifique de croire qu'il existe une interaction, auquel cas vous devriez coder explicitement cette interaction.

+0

merci je vais vérifier cela. Oui j'ai utilisé le * parce que je voulais tester toutes les interactions entre tous les paramètres et voir lequel est significatif. Après quelques tests de suppression, il n'y a plus que 3 termes d'interactions significatifs. Mais je ne savais pas lequel était au début, donc je devais utiliser * –

+0

Salut, j'ai essayé votre solution, cependant, "quasi" ne peut pas être utilisé dans 'glmer'. J'ai eu cette erreur après l'exécution du code 'Erreur dans lme4 :: glFormula (formule = y ~ Sonde + Extraction + Dilution +: " quasi "les familles ne peuvent pas être utilisées dans glmer' –

+0

J'avais besoin de quasi-overdispersion présente dans mes données. Y at-il un moyen de surmonter/traiter ce problème dans le paquet lme4? –