Effectuer un calcul dans une boucle avec les coefficients d'un glm

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Cyrielle Jac
Messages : 55
Enregistré le : 13 Mar 2017, 08:30

Effectuer un calcul dans une boucle avec les coefficients d'un glm

Messagepar Cyrielle Jac » 29 Aoû 2018, 12:15

Bonjour à tous,

J'ai un tableau de données avec plusieurs variables : la biomasse, la longévité (variable catégorielle), l'impact (variables continus) et l'habitat (facteurs) :

Station Biomasse Longévité Impact habitat
1 100 4 0.005 A5.1
1 52 2 0.005 A5.1
1 15 3 0.005 A5.1
2 20 2 0.6 A5.2
2 5 4 0.6 A5.2
3 54 3 0.07 A5.1
3 60 1 0.07 A5.1


J'ai ensuite fait un glm (qui me permet d'obtenir les coefficients nécessaire pour la suite de mes calculs) :

a<- glm(log(biomasse)~log(Longévité)+ habitat + impact + impact*habitat + log(longévité)*impact + log(longévité)*habitat)

J'obtiens donc des coefficients que j'utilise dans une autre équation où je m'intéresse à chaque habitat séparement :

B0 + B1*log(10) + B2_51+B3*log(0.01) + B4_51*log(0.01) + B5_51 *log(10) + B6*log(10)*log(0.01)

donc Bo = intercept
B1 = coefficient pour la variable longévité
B2_51 = coefficient pour l'habitat A5.1
....

Comme je dois faire ce calcul par habitat, j'aimerais faire une boucle dans laquelle je récupère les coefficients et je change juste les coefficients qui change pour chaque habitat (donc B2, B3 et B5). Es ce possible?

Merci d'avance pour votre aide

Cyrielle

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Effectuer un calcul dans une boucle avec les coefficients d'un glm

Messagepar Logez Maxime » 29 Aoû 2018, 14:03

Bonjour,

quel est l'objectif ? Si c'est de faire des prédictions pour les différents types d'habitat tu peux te créer un data.frame avec toutes les combinaisons possibles de valeurs et faire la prédiction dessus. Un exemple avec x une variable continue et z un facteur pour expliquer la variable y.

Code : Tout sélectionner

x <- rnorm(100)
z <- gl(4,25)
y <- 3*x-3+rnorm(100)
y <- y+as.integer(z)

dat <- data.frame(x, y, z)
rm(x,y,z)

glm1 <- glm(y ~ x*z, data = dat)

ndat <- expand.grid(x = seq(min(dat $x), max(dat $x), le = 101), z = levels(dat $z))
ndat$ypred <- predict(glm1, newdata = ndat)
require(ggplot2)
ggplot(ndat, aes(x, ypred,color = z)) +
  geom_path()

Cordialement,
Maxime


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

cron