2011-08-03 1 views
1

je sais comment adapter généralisées modèles linéaires (de MLG) et généralisées modèles mixtes linéaires (de GLMM) avec glm et glmer de paquet lme4 dans R . Étant un étudiant des statistiques, je suis intéressé à apprendre comment s'adapter GLM et GLMM suivant pas à pas les formules de base R codes. J'apprécierais grandement que vous indiquiez des ressources et/ou des références à cet égard. Merci d'avance.étape par étape, des codes de _R_ basé sur la formule de GLM et GLMM

EDiT

Je voudrais faire GLM et GLMM étape par étape en utilisant la formule que nous LM en utilisant l'approche matricielle. Y a-t-il un livre ou un didacticiel R disponible qui utilise cette approche? Merci

+0

Voulez-vous dire que vous voulez apprendre à écrire du code pour s'adapter à GLM (M) s? –

+3

Je pense que la réponse est, en partie, "McCullagh et Nelder". Lisez cela, vous indique tous les algorithmes. Commencez par des choses simples et gaussiennes linéaires. – Spacedman

+0

@Spacedman En effet. Et les sources R bien sûr. –

Répondre

2

«Un compagnon R à la régression appliquée» par Fox et Weisberg, a un excellent guide dans le chapitre 8, avec la régression logistique à titre d'exemple. Le livre enseigne également comment créer des fonctions de modèle en général avec des objets S3 et S4. En particulier, il a de bonnes réponses à une question récente que j'avais posée sur la modélisation - What are the key components and functions for standard model objects in R?.

2

Cela peut aider
** régression de Poisson: GLM **
* lecture suggérée: Introduction au modèle linéaire généralisé, par Annette J. Dobson, 2e édition, chapitre 4, section 4.3 et 4.4 *

library(MASS) 
poisreg = function(n, b1, y, x1, tolerence) { # n is the number of iteration 
    x0 = rep(1, length(x1)) 
    x = cbind(x0, x1) 
    y = as.matrix(y) 
    w = matrix(0, nrow = (length(y)), ncol = (length(y))) 
    b0 = b1 
    result = b0 
    for (i in 1:n) { 
    mu = exp(x %*% b0)  
    diag(w) = mu 
    eta = x %*% b0 
    z = eta + (y - mu) * (1/mu) # dot product of (y - mu) & (1/mu) 
    xtwx = t(x) %*% w %*% x 
    xtwz = t(x) %*% w %*% z 
    b1 = solve(xtwx, xtwz) 
    if(sqrt(sum(b0 - b1)^2) > tolerence) (b0 <- b1) 
    result<- cbind(result,b1) # to get all the iterated values 
    } 
    result 
} 
x1 <- c(-1,-1,0,0,0,0,1,1,1) # x1 is the explanatory variable 
y<- c(2,3,6,7,8,9,10,12,15) # y is the dependent variable 
b1 = c(1,2) # initial value 
poisreg (10, b1, y, x1, .001) # Nicely converge after 10 iterations 
glm(y~x1, family=poisson(link="log")) # check your result with the R GLM program 
+0

+1: Merci @overwhelmed pour votre belle réponse. Votre réponse pourrait être un bon début. Merci encore. – MYaseen208

+0

Existe-t-il un moyen de changer ce code pour une implémentation binomiale au lieu de poisson? –

Questions connexes