Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
t-test et regression pour variable binaire
2 participants
Page 1 sur 1
t-test et regression pour variable binaire
Bonjour à tous,
Je sollicite votre aide pour mon projet de recherche.
je dispose de données suivante : Y est le numéro d'un item et X est un binaire indiquant pour une personne donnée à qui on a proposé cet item si elle l'a acheté ou pas. Je souhaite démontrer que certains choix sont couplés à des produits plus que d'autres.
J'aurais donc trois questions :
1-Est-ce qu'un t-test me permettra de répondre correctement à cette question et est-ce que ma démarche est correcte ? est-ce qu'il faudrait exploiter les autre données ?(t=38,35) et si oui comment ?
2- En quoi pourrait me renseigner la fonction lm sur cette relation ? comment interpréter les résultats ?
3- est ce possible de refaire la même démarche pour deux variables binaires ?
En vous remerciant pour votre aide précieuse
Je sollicite votre aide pour mon projet de recherche.
je dispose de données suivante : Y est le numéro d'un item et X est un binaire indiquant pour une personne donnée à qui on a proposé cet item si elle l'a acheté ou pas. Je souhaite démontrer que certains choix sont couplés à des produits plus que d'autres.
J'aurais donc trois questions :
1-Est-ce qu'un t-test me permettra de répondre correctement à cette question et est-ce que ma démarche est correcte ? est-ce qu'il faudrait exploiter les autre données ?(t=38,35) et si oui comment ?
- Code:
t.test(df$X,df$Y)
Welch Two Sample t-test
data: df$X,df$Y
t = 38.353, df = 530.58, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
20.30138 22.49334
sample estimates:
mean of x mean of y
21.49717514 0.09981168
2- En quoi pourrait me renseigner la fonction lm sur cette relation ? comment interpréter les résultats ?
- Code:
m=lm(df$X,df$Y)
summary(m)
- Code:
Call:
Residuals:
Min 1Q Median 3Q Max
-17.161 -11.345 -1.528 6.839 36.839
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 21.1611 0.5866 36.074 <2e-16 ***
df$X 3.3672 1.8567 1.814 0.0703 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 12.82 on 529 degrees of freedom
Multiple R-squared: 0.006179, Adjusted R-squared: 0.0043
F-statistic: 3.289 on 1 and 529 DF, p-value: 0.07032
3- est ce possible de refaire la même démarche pour deux variables binaires ?
- Code:
Mes données:
df=structure(list(X = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0,
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0), Y = c(9L, 25L, 23L, 50L,
9L, 4L, 20L, 36L, 25L, 28L, 32L, 26L, 26L, 26L, 26L, 4L, 16L,
9L, 25L, 26L, 28L, 32L, 4L, 6L, 6L, 6L, 6L, 6L, 4L, 44L, 15L,
9L, 4L, 4L, 9L, 6L, 26L, 33L, 44L, 44L, 4L, 36L, 14L, 4L, 4L,
36L, 9L, 32L, 32L, 4L, 44L, 26L, 9L, 6L, 4L, 33L, 26L, 26L, 26L,
23L, 26L, 9L, 14L, 36L, 44L, 4L, 35L, 32L, 28L, 28L, 9L, 6L,
4L, 36L, 26L, 9L, 9L, 9L, 4L, 4L, 14L, 33L, 15L, 4L, 4L, 58L,
26L, 4L, 33L, 9L, 4L, 4L, 4L, 39L, 26L, 9L, 6L, 33L, 28L, 33L,
20L, 33L, 6L, 14L, 20L, 50L, 58L, 17L, 36L, 28L, 33L, 50L, 16L,
4L, 33L, 50L, 9L, 26L, 28L, 4L, 58L, 9L, 17L, 6L, 14L, 58L, 28L,
9L, 6L, 50L, 9L, 9L, 9L, 4L, 26L, 9L, 9L, 14L, 36L, 44L, 20L,
26L, 50L, 6L, 9L, 16L, 14L, 11L, 44L, 9L, 58L, 9L, 14L, 9L, 36L,
28L, 17L, 28L, 23L, 11L, 33L, 6L, 14L, 36L, 9L, 9L, 11L, 17L,
17L, 20L, 9L, 14L, 11L, 20L, 6L, 4L, 9L, 14L, 11L, 4L, 6L, 14L,
23L, 36L, 23L, 20L, 11L, 9L, 9L, 14L, 26L, 9L, 6L, 16L, 18L,
23L, 43L, 23L, 6L, 6L, 9L, 28L, 20L, 58L, 36L, 11L, 51L, 20L,
26L, 33L, 9L, 6L, 9L, 17L, 14L, 58L, 11L, 20L, 6L, 17L, 14L,
28L, 16L, 6L, 6L, 28L, 6L, 6L, 9L, 28L, 9L, 22L, 14L, 6L, 6L,
14L, 17L, 36L, 37L, 20L, 20L, 35L, 23L, 9L, 25L, 23L, 23L, 33L,
18L, 51L, 9L, 6L, 6L, 9L, 17L, 9L, 29L, 28L, 20L, 28L, 14L, 50L,
14L, 17L, 6L, 11L, 11L, 28L, 20L, 28L, 20L, 6L, 6L, 9L, 9L, 47L,
9L, 9L, 11L, 17L, 23L, 23L, 44L, 20L, 36L, 52L, 17L, 17L, 44L,
28L, 11L, 14L, 28L, 23L, 9L, 9L, 17L, 18L, 22L, 28L, 9L, 14L,
14L, 14L, 23L, 23L, 52L, 17L, 28L, 14L, 28L, 9L, 6L, 6L, 28L,
23L, 23L, 4L, 37L, 51L, 51L, 14L, 23L, 6L, 28L, 20L, 17L, 26L,
11L, 35L, 15L, 14L, 20L, 18L, 4L, 29L, 6L, 30L, 51L, 23L, 9L,
23L, 14L, 23L, 14L, 15L, 36L, 9L, 37L, 29L, 28L, 30L, 23L, 51L,
51L, 17L, 17L, 30L, 18L, 23L, 28L, 15L, 14L, 9L, 28L, 33L, 14L,
23L, 9L, 14L, 26L, 9L, 23L, 14L, 9L, 44L, 43L, 15L, 4L, 14L,
14L, 23L, 52L, 23L, 14L, 32L, 17L, 17L, 44L, 20L, 30L, 28L, 43L,
33L, 23L, 9L, 44L, 33L, 23L, 18L, 26L, 26L, 26L, 9L, 6L, 11L,
6L, 18L, 30L, 51L, 44L, 23L, 43L, 30L, 23L, 17L, 44L, 43L, 23L,
15L, 28L, 17L, 18L, 23L, 26L, 14L, 9L, 28L, 15L, 16L, 9L, 17L,
30L, 15L, 20L, 6L, 23L, 18L, 32L, 30L, 18L, 17L, 23L, 18L, 18L,
6L, 17L, 30L, 51L, 44L, 23L, 28L, 18L, 15L, 18L, 28L, 26L, 44L,
23L, 23L, 17L, 28L, 30L, 17L, 44L, 43L, 30L, 38L, 17L, 28L, 26L,
17L, 17L, 18L, 23L, 28L, 6L, 30L, 17L, 9L, 28L, 28L, 28L, 11L,
17L, 17L, 20L, 9L, 30L, 18L, 47L, 30L, 23L, 33L, 18L, 30L, 17L,
36L, 30L, 23L, 17L, 30L, 33L, 14L, 18L, 15L, 32L, 23L, 23L, 30L,
23L, 30L, 30L, 43L, 30L, 30L, 17L, 36L, 17L, 17L, 51L, 30L, 17L,
15L, 50L, 11L, 11L, 4L, 32L, 26L, 17L)), .Names = c("X", "Y"), row.names = c(NA,
-531L), class = "data.frame")
En vous remerciant pour votre aide précieuse
lenny868- Nombre de messages : 48
Date d'inscription : 16/01/2018
Re: t-test et regression pour variable binaire
La démarche ici n'est pas correcte. Tout d'abord, un test t compare la moyenne de deux échantillons, pas un lien entre deux variables d'un même échantillon. Par ailleurs, les deux échantillons doivent être gaussiens, or ici la variable X est binomiale.
L'idée de la régression est meilleure, mais - dans R - une régression se note avec la notation "formula" avec la syntaxe utilisant le tilde "~". La syntaxe que vous utilisez n'est pas la bonne.
Une démarche possible est de se mettre dans le cadre de la régression logistique et de voir si la probabilité d'acheter (binomiale) dépend du numéro de l'item. A cet égard, il est dommage que vous n'ayez (apparemment) qu'un individu testé par numéro d'item.
HTH, Eric.
L'idée de la régression est meilleure, mais - dans R - une régression se note avec la notation "formula" avec la syntaxe utilisant le tilde "~". La syntaxe que vous utilisez n'est pas la bonne.
Une démarche possible est de se mettre dans le cadre de la régression logistique et de voir si la probabilité d'acheter (binomiale) dépend du numéro de l'item. A cet égard, il est dommage que vous n'ayez (apparemment) qu'un individu testé par numéro d'item.
HTH, Eric.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Re: t-test et regression pour variable binaire
merci pour votre retour. Est-ce la bonne syntaxe pour la regression ? comment devrais-je interpreter les résultats ?
Il me semble avoir plusieurs individu par item ?
Merci,
Lenny
- Code:
m=lm(formula = df$X ~ df$Y)
summary(m)
Call:
lm(formula = df$X ~ df$Y)
Residuals:
Min 1Q Median 3Q Max
-17.161 -11.345 -1.528 6.839 36.839
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 21.1611 0.5866 36.074 <2e-16 ***
df$X 3.3672 1.8567 1.814 0.0703 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 12.82 on 529 degrees of freedom
Multiple R-squared: 0.006179, Adjusted R-squared: 0.0043
F-statistic: 3.289 on 1 and 529 DF, p-value: 0.07032
Il me semble avoir plusieurs individu par item ?
- Code:
table(df$X,df$Y)
4 6 9 11 14 15 16 17 18 20 22 23 25 26 28 29 30 32 33 35 36 37 38 39 43 44 47 50 51 52 58
0 30 41 55 17 34 11 5 35 17 21 2 34 4 25 32 3 22 5 15 2 13 3 1 1 7 15 2 7 10 2 7
1 0 0 7 0 3 1 1 5 1 0 0 10 0 3 7 0 1 4 2 1 3 0 0 0 0 2 0 1 0 1 0
Merci,
Lenny
lenny868- Nombre de messages : 48
Date d'inscription : 16/01/2018
Re: t-test et regression pour variable binaire
Ok, très bien si vous avez plusieurs mesures par item.
Non, ce n'est pas la bonne syntaxe (ni le bon modèle) pour la régression, car la variable que vous voulez expliquez (X) ne suit pas une distribution normale, mais une distribution binomiale. Il vous faut une régression logistique, qui peut par exemple s'ajuster avec la fonction glm() sous R. Il y a pas mal de tutoriels sur le web.
Tachez de vous en sortir seul, et en cas de problème n'hésitez pas à revenir vers nous.
Eric.
Non, ce n'est pas la bonne syntaxe (ni le bon modèle) pour la régression, car la variable que vous voulez expliquez (X) ne suit pas une distribution normale, mais une distribution binomiale. Il vous faut une régression logistique, qui peut par exemple s'ajuster avec la fonction glm() sous R. Il y a pas mal de tutoriels sur le web.
Tachez de vous en sortir seul, et en cas de problème n'hésitez pas à revenir vers nous.
Eric.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Re: t-test et regression pour variable binaire
Bonjour, Merci pour ces conseils.
J'ai fais comme suit : aggregation par "product" des choix "yes" ou "no"
J'ai suivi un tuto cmme suit :
Est-ce que c'est la bonne démarche ?
il s'agit de quel hypothèses on part dans ce genre de test ? Que peut-on conclure de ces résultats ?
Merci,
Lenny
J'ai fais comme suit : aggregation par "product" des choix "yes" ou "no"
- Code:
df=structure(list(Product = c(4L, 6L, 9L, 11L, 14L, 15L, 16L, 17L,
18L, 20L, 22L, 23L, 25L, 26L, 28L, 29L, 30L, 32L, 33L, 35L, 36L,
37L, 38L, 39L, 43L, 44L, 47L, 50L, 51L, 52L, 58L), No = c(30L,
41L, 55L, 17L, 34L, 11L, 5L, 35L, 17L, 21L, 2L, 34L, 4L, 25L,
32L, 3L, 22L, 5L, 15L, 2L, 13L, 3L, 1L, 1L, 7L, 15L, 2L, 7L,
10L, 2L, 7L), Yes = c(0L, 0L, 7L, 0L, 3L, 1L, 1L, 5L, 1L, 0L,
0L, 10L, 0L, 3L, 7L, 0L, 1L, 4L, 2L, 1L, 3L, 0L, 0L, 0L, 0L,
2L, 0L, 1L, 0L, 1L, 0L)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -31L), .Names = c("Product", "No", "Yes"
))
J'ai suivi un tuto cmme suit :
- Code:
attach(df)
> glm(cbind(Yes,No) ~ Product , family=binomial)
Call: glm(formula = cbind(Yes, No) ~ Product, family = binomial)
Coefficients:
(Intercept) Product
-2.63639 0.01917
Degrees of Freedom: 30 Total (i.e. Null); 29 Residual
Null Deviance: 52.83
Residual Deviance: 49.69 AIC: 97.24
> 1-pchisq(49.69,29)
[1] 0.009751491
>
Est-ce que c'est la bonne démarche ?
il s'agit de quel hypothèses on part dans ce genre de test ? Que peut-on conclure de ces résultats ?
Merci,
Lenny
lenny868- Nombre de messages : 48
Date d'inscription : 16/01/2018
Re: t-test et regression pour variable binaire
Oui, c'est a priori la bonne démarche. Il s'agit ici de savoir si la variable Product a un effet sur le choix Yes/No.
Une fois que vous avez ajusté ce modèle, vous pouvez faire un test, par exemple comme suit :
Et l'on remarque qu'il n'y a pas d'effet significatif du Produit sur le choix Yes/No, ce qui répond à votre question, je pense.
Attention cependant, ce modèle prend la variable Product comme un trait quantitatif, c'est-à-dire, par exemple, que le produit 18 est supposé avoir un effet double que le produit 9 (dans l'espace du modèle), etc., ce qui n'a peut être pas de sens dans votre cas. Les numéros des produits sont comme des étiquettes "a", "b", "c", etc., par exemple. C'est justement parce que cette variable est prise comme quantitative, que le df de son test vaux 1, comme une pente dans une régression normale. Si ceci n'a pas de sens, il faut forcer R à prendre cette variable comme qualitative, avec la fonction factor(), comme ça :
Et là sort un très fort effet de la variable Product (et le df change).
D'une manière générale, il est piégeux de coder des variables qualitatives avec des nombres.
A vous de voir ce qui vous convient le mieux.
HTH, Eric.
Une fois que vous avez ajusté ce modèle, vous pouvez faire un test, par exemple comme suit :
- Code:
> anova(glm(cbind(Yes,No) ~ Product, family=binomial),test="Chisq")
Analysis of Deviance Table
Model: binomial, link: logit
Response: cbind(Yes, No)
Terms added sequentially (first to last)
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 30 52.831
Product 1 3.1387 29 49.692 0.07646 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Et l'on remarque qu'il n'y a pas d'effet significatif du Produit sur le choix Yes/No, ce qui répond à votre question, je pense.
Attention cependant, ce modèle prend la variable Product comme un trait quantitatif, c'est-à-dire, par exemple, que le produit 18 est supposé avoir un effet double que le produit 9 (dans l'espace du modèle), etc., ce qui n'a peut être pas de sens dans votre cas. Les numéros des produits sont comme des étiquettes "a", "b", "c", etc., par exemple. C'est justement parce que cette variable est prise comme quantitative, que le df de son test vaux 1, comme une pente dans une régression normale. Si ceci n'a pas de sens, il faut forcer R à prendre cette variable comme qualitative, avec la fonction factor(), comme ça :
- Code:
> anova(glm(cbind(Yes,No) ~ factor(Product), family=binomial),test="Chisq")
Analysis of Deviance Table
Model: binomial, link: logit
Response: cbind(Yes, No)
Terms added sequentially (first to last)
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 30 52.831
factor(Product) 30 52.831 0 0.000 0.006188 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Et là sort un très fort effet de la variable Product (et le df change).
D'une manière générale, il est piégeux de coder des variables qualitatives avec des nombres.
A vous de voir ce qui vous convient le mieux.
HTH, Eric.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Re: t-test et regression pour variable binaire
Ah super, merci d'avoir souligné le trait Quantitatif / Qualitatif. En effet, la numérotation englobe un score de qualité (plus le score est élevé plus c'est mieux).
Donc j'en conclu en effet, que les choix ne sont pas plus élevé quand la qualité croit, plutôt comme si les choix s'orientait vers un niveau de qualité spécifique semble-t-il.
J'utilise la même méthode pour integrer une variable en plus : Tranche d'age (Age)
J'obtiens
Pourrais-je dans ce cas m'orienter vers l'effet de l'age ?
Une autre question en terme de méthode : pourquoi combiner l'anova et le glm ?
Je suis impressionnée par la méthode et les apports, merci beaucoup !
Lenny
Donc j'en conclu en effet, que les choix ne sont pas plus élevé quand la qualité croit, plutôt comme si les choix s'orientait vers un niveau de qualité spécifique semble-t-il.
J'utilise la même méthode pour integrer une variable en plus : Tranche d'age (Age)
- Code:
df=structure(list(Age = structure(c(1L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L,
8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 11L,
11L, 11L, 11L, 11L, 11L, 11L, 12L, 13L, NA), .Label = c("(10,15]",
"(15,20]", "(20,25]", "(25,30]", "(30,35]", "(35,40]", "(40,45]",
"(45,50]", "(50,55]", "(55,60]", "(60,65]", "(65,70]", "(70,75]",
"(75,80]"), class = "factor"), Product = c(6L, 16L, 4L, 6L, 9L,
11L, 14L, 15L, 17L, 20L, 23L, 26L, 28L, 30L, 32L, 33L, 36L, 44L,
47L, 4L, 6L, 9L, 11L, 14L, 15L, 17L, 18L, 20L, 23L, 25L, 26L,
28L, 30L, 32L, 33L, 36L, 44L, 50L, 51L, 4L, 6L, 9L, 11L, 14L,
15L, 16L, 17L, 18L, 20L, 22L, 23L, 26L, 28L, 29L, 30L, 32L, 33L,
36L, 37L, 39L, 43L, 44L, 50L, 51L, 58L, 4L, 6L, 9L, 11L, 14L,
15L, 17L, 18L, 20L, 23L, 26L, 28L, 30L, 32L, 33L, 36L, 37L, 47L,
58L, 4L, 6L, 9L, 11L, 14L, 15L, 17L, 18L, 20L, 23L, 25L, 26L,
28L, 30L, 33L, 35L, 36L, 44L, 4L, 6L, 9L, 14L, 15L, 17L, 20L,
22L, 23L, 25L, 26L, 28L, 29L, 30L, 33L, 36L, 38L, 43L, 44L, 50L,
51L, 58L, 4L, 6L, 9L, 11L, 14L, 15L, 16L, 17L, 20L, 23L, 25L,
26L, 28L, 30L, 32L, 33L, 35L, 36L, 37L, 43L, 44L, 50L, 51L, 52L,
58L, 4L, 6L, 9L, 11L, 14L, 15L, 16L, 17L, 18L, 20L, 23L, 26L,
28L, 29L, 30L, 32L, 33L, 36L, 43L, 44L, 50L, 51L, 52L, 4L, 6L,
9L, 14L, 17L, 18L, 20L, 23L, 25L, 26L, 28L, 30L, 32L, 33L, 35L,
36L, 43L, 44L, 51L, 52L, 58L, 6L, 9L, 20L, 23L, 26L, 28L, 36L,
4L, 15L, 6L), Yes = c(2L, 1L, 4L, 5L, 2L, 1L, 2L, 2L, 2L, 2L,
1L, 3L, 4L, 4L, 1L, 4L, 1L, 1L, 1L, 6L, 2L, 4L, 4L, 8L, 1L, 4L,
1L, 1L, 3L, 1L, 5L, 1L, 1L, 0L, 2L, 1L, 1L, 1L, 2L, 4L, 4L, 8L,
2L, 6L, 1L, 1L, 4L, 4L, 2L, 1L, 9L, 3L, 3L, 1L, 2L, 1L, 2L, 2L,
1L, 1L, 1L, 1L, 1L, 3L, 1L, 4L, 3L, 13L, 2L, 1L, 2L, 4L, 3L,
2L, 3L, 2L, 5L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 4L, 9L, 9L, 4L, 5L,
1L, 8L, 2L, 1L, 3L, 1L, 0L, 3L, 1L, 1L, 1L, 2L, 2L, 3L, 7L, 3L,
2L, 1L, 7L, 3L, 1L, 1L, 1L, 3L, 8L, 1L, 2L, 1L, 3L, 1L, 1L, 2L,
1L, 2L, 2L, 2L, 3L, 2L, 3L, 2L, 1L, 2L, 3L, 2L, 2L, 1L, 3L, 3L,
6L, 0L, 0L, 1L, 0L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 2L, 3L, 8L, 2L,
6L, 1L, 1L, 1L, 3L, 3L, 7L, 5L, 4L, 1L, 2L, 1L, 2L, 3L, 3L, 3L,
3L, 1L, 0L, 1L, 3L, 6L, 3L, 3L, 4L, 2L, 3L, 1L, 2L, 1L, 2L, 1L,
2L, 0L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 0L, 3L, 2L, 0L, 2L, 1L, 1L,
1L, 1L), No = c(0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 1L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L,
0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 2L, 0L, 1L, 0L,
0L, 0L, 0L, 1L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L,
0L, 0L, 3L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 2L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 3L, 0L, 1L, 1L,
0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 1L, 0L, 3L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L,
0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L)), class = "data.frame", row.names = c(NA,
-203L), .Names = c("Age", "Product", "Yes", "No"))
J'obtiens
- Code:
anova(glm(cbind(Yes,No) ~ Age + Product, family=binomial),test="Chisq")
Analysis of Deviance Table
Model: binomial, link: logit
Response: cbind(Yes, No)
Terms added sequentially (first to last)
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 201 176.98
Age 12 24.4260 189 152.56 0.01779 *
Product 1 1.8942 188 150.66 0.16873
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Pourrais-je dans ce cas m'orienter vers l'effet de l'age ?
Une autre question en terme de méthode : pourquoi combiner l'anova et le glm ?
Je suis impressionnée par la méthode et les apports, merci beaucoup !
Lenny
lenny868- Nombre de messages : 48
Date d'inscription : 16/01/2018
Re: t-test et regression pour variable binaire
Oui, il semble y avoir un effet âge.
En revanche pour cet autre modèle :
1) Le codage de l'âge que vous utilisez (intervales) est qualitatif, ce qui explique - une fois encore - que vous avez pas mal de df pour ce terme (12). Je vous invite à replacer la variable âge décrite en intervalles par le point médian de ces intervalles et traiter l'âge comme une variable quantitative, ce qui a du sens ici.
2) Vous pourriez/devriez ajouter dans cet autre modèle l’interaction entre Product et âge. L'effet Product n'est peut-être pas le même d'un âge à un autre, ou réciproquement.
Il ne s'agit pas de combiner ANOVA et glm ici. Il n'y a pas d'ANOVA ici. C'est une ambiguïté de R, je trouve. La fonction anova() (dans ce cas) demande à R de présenter les résultats sous forme d'un tableau d'ANOVA, pas de faire une ANOVA.. Pas mal de gens se plantent sur ce point.
HTH, Eric.
En revanche pour cet autre modèle :
1) Le codage de l'âge que vous utilisez (intervales) est qualitatif, ce qui explique - une fois encore - que vous avez pas mal de df pour ce terme (12). Je vous invite à replacer la variable âge décrite en intervalles par le point médian de ces intervalles et traiter l'âge comme une variable quantitative, ce qui a du sens ici.
2) Vous pourriez/devriez ajouter dans cet autre modèle l’interaction entre Product et âge. L'effet Product n'est peut-être pas le même d'un âge à un autre, ou réciproquement.
Il ne s'agit pas de combiner ANOVA et glm ici. Il n'y a pas d'ANOVA ici. C'est une ambiguïté de R, je trouve. La fonction anova() (dans ce cas) demande à R de présenter les résultats sous forme d'un tableau d'ANOVA, pas de faire une ANOVA.. Pas mal de gens se plantent sur ce point.
HTH, Eric.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Re: t-test et regression pour variable binaire
Merci encore, J'essai de prendre en compte vos remarques
Pourquoi les p-value changent de valeur en inversant l'ordre des variables :
Je crois que c'est de la gourmandise de vouloir y intégrer une dernière variable : Client habitué ou pas 'Type'. Avec mes données agrégés par intervalle d'age, j'hésite entre le fait d'agréger par somme le nombre d'habitué comme suit :
ou de laisser qualitativement 0/1 (factor)
Dans les deux cas Type ne semble pas être significatif, pourtant la grande proportion des clients "acheteurs" sont des habitués.
Je crois qu'à ce niveau il faudrait tester le type a part ? J'hésite entre chi2 ou utiliser la même méthode
chi 2 :
GLM
Quelle est le moyen correct pour y arriver ?
En vous remerciant encore pour votre aide précieuse
Lenny,
Pourquoi les p-value changent de valeur en inversant l'ordre des variables :
- Code:
anova(glm(cbind(Yes,No) ~ Age + Product, family=binomial),test="Chisq")
anova(glm(cbind(Yes,No) ~ Product + Age, family=binomial),test="Chisq")
Je crois que c'est de la gourmandise de vouloir y intégrer une dernière variable : Client habitué ou pas 'Type'. Avec mes données agrégés par intervalle d'age, j'hésite entre le fait d'agréger par somme le nombre d'habitué comme suit :
- Code:
res=structure(list(Product = structure(c(1L, 1L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L,
8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L,
11L, 11L, 11L, 11L, 11L, 11L, 11L, 12L, 13L, NA), .Label = c("(10,15]",
"(15,20]", "(20,25]", "(25,30]", "(30,35]", "(35,40]", "(40,45]",
"(45,50]", "(50,55]", "(55,60]", "(60,65]", "(65,70]", "(70,75]",
"(75,80]"), class = "factor"), Age = c(6L, 16L, 4L, 6L, 9L, 11L,
14L, 15L, 17L, 20L, 23L, 26L, 28L, 30L, 32L, 33L, 36L, 44L, 47L,
4L, 6L, 9L, 11L, 14L, 15L, 17L, 18L, 20L, 23L, 25L, 26L, 28L,
30L, 32L, 33L, 36L, 44L, 50L, 51L, 4L, 6L, 9L, 11L, 14L, 15L,
16L, 17L, 18L, 20L, 22L, 23L, 26L, 28L, 29L, 30L, 32L, 33L, 36L,
37L, 39L, 43L, 44L, 50L, 51L, 58L, 4L, 6L, 9L, 11L, 14L, 15L,
17L, 18L, 20L, 23L, 26L, 28L, 30L, 32L, 33L, 36L, 37L, 47L, 58L,
4L, 6L, 9L, 11L, 14L, 15L, 17L, 18L, 20L, 23L, 25L, 26L, 28L,
30L, 33L, 35L, 36L, 44L, 4L, 6L, 9L, 14L, 15L, 17L, 20L, 22L,
23L, 25L, 26L, 28L, 29L, 30L, 33L, 36L, 38L, 43L, 44L, 50L, 51L,
58L, 4L, 6L, 9L, 11L, 14L, 15L, 16L, 17L, 20L, 23L, 25L, 26L,
28L, 30L, 32L, 33L, 35L, 36L, 37L, 43L, 44L, 50L, 51L, 52L, 58L,
4L, 6L, 9L, 11L, 14L, 15L, 16L, 17L, 18L, 20L, 23L, 26L, 28L,
29L, 30L, 32L, 33L, 36L, 43L, 44L, 50L, 51L, 52L, 4L, 6L, 9L,
14L, 17L, 18L, 20L, 23L, 25L, 26L, 28L, 30L, 32L, 33L, 35L, 36L,
43L, 44L, 51L, 52L, 58L, 6L, 9L, 20L, 23L, 26L, 28L, 36L, 4L,
15L, 6L), Type = c(2L, 1L, 4L, 5L, 2L, 1L, 2L, 2L, 2L, 2L, 1L,
3L, 4L, 4L, 1L, 4L, 1L, 1L, 1L, 6L, 2L, 4L, 4L, 8L, 1L, 4L, 1L,
1L, 3L, 1L, 5L, 1L, 1L, 0L, 2L, 1L, 1L, 1L, 2L, 4L, 4L, 8L, 2L,
6L, 1L, 1L, 4L, 4L, 2L, 1L, 9L, 3L, 3L, 1L, 2L, 1L, 2L, 2L, 1L,
1L, 1L, 1L, 1L, 3L, 1L, 4L, 3L, 13L, 2L, 1L, 2L, 4L, 3L, 2L,
3L, 2L, 5L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 4L, 9L, 9L, 4L, 5L, 1L,
8L, 2L, 1L, 3L, 1L, 0L, 3L, 1L, 1L, 1L, 2L, 2L, 3L, 7L, 3L, 2L,
1L, 7L, 3L, 1L, 1L, 1L, 3L, 8L, 1L, 2L, 1L, 3L, 1L, 1L, 2L, 1L,
2L, 2L, 2L, 3L, 2L, 3L, 2L, 1L, 2L, 3L, 2L, 2L, 1L, 3L, 3L, 6L,
0L, 0L, 1L, 0L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 2L, 3L, 8L, 2L, 6L,
1L, 1L, 1L, 3L, 3L, 7L, 5L, 4L, 1L, 2L, 1L, 2L, 3L, 3L, 3L, 3L,
1L, 0L, 1L, 3L, 6L, 3L, 3L, 4L, 2L, 3L, 1L, 2L, 1L, 2L, 1L, 2L,
0L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 0L, 3L, 2L, 0L, 2L, 1L, 1L, 1L,
1L), Yes = c(0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 1L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L,
0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 2L, 0L, 1L, 0L,
0L, 0L, 0L, 1L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L,
0L, 0L, 3L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 2L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 3L, 0L, 1L, 1L,
0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 1L, 0L, 3L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L,
0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L),
No = c(2L, 0L, 3L, 4L, 3L, 1L, 1L, 2L, 1L, 2L, 0L, 3L, 5L,
4L, 1L, 4L, 1L, 1L, 1L, 6L, 2L, 3L, 3L, 8L, 1L, 4L, 0L, 1L,
3L, 1L, 5L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 4L, 4L, 7L, 1L,
5L, 1L, 1L, 5L, 4L, 1L, 1L, 9L, 3L, 3L, 1L, 2L, 1L, 2L, 2L,
1L, 1L, 1L, 1L, 1L, 2L, 1L, 4L, 3L, 11L, 1L, 0L, 2L, 5L,
3L, 2L, 4L, 1L, 4L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 4L, 7L, 10L,
3L, 6L, 1L, 9L, 2L, 1L, 3L, 1L, 1L, 5L, 1L, 1L, 1L, 1L, 2L,
2L, 5L, 3L, 2L, 2L, 7L, 3L, 1L, 3L, 0L, 4L, 9L, 1L, 2L, 1L,
4L, 1L, 1L, 2L, 1L, 2L, 2L, 1L, 2L, 3L, 3L, 2L, 1L, 3L, 4L,
2L, 3L, 1L, 3L, 6L, 6L, 1L, 1L, 1L, 1L, 1L, 1L, 4L, 2L, 1L,
1L, 1L, 2L, 3L, 7L, 2L, 5L, 1L, 1L, 1L, 3L, 2L, 10L, 5L,
4L, 1L, 2L, 2L, 2L, 3L, 2L, 4L, 2L, 1L, 1L, 1L, 3L, 6L, 3L,
2L, 4L, 2L, 4L, 0L, 2L, 1L, 2L, 1L, 2L, 0L, 3L, 1L, 2L, 2L,
1L, 0L, 0L, 1L, 3L, 2L, 1L, 2L, 1L, 1L, 1L, 1L)), class = "data.frame", row.names = c(NA,
-203L), .Names = c("Product", "Age", "Type", "Yes", "No"))
ou de laisser qualitativement 0/1 (factor)
- Code:
res=structure(list(Product = structure(c(1L, 1L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L,
8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L,
9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 9L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L, 10L,
10L, 10L, 10L, 10L, 10L, 11L, 11L, 11L, 11L, 11L, 11L, 11L, 11L,
12L, 13L, NA), .Label = c("(10,15]", "(15,20]", "(20,25]", "(25,30]",
"(30,35]", "(35,40]", "(40,45]", "(45,50]", "(50,55]", "(55,60]",
"(60,65]", "(65,70]", "(70,75]", "(75,80]"), class = "factor"),
Age = c(6L, 16L, 4L, 4L, 6L, 6L, 9L, 11L, 14L, 14L, 15L,
17L, 17L, 20L, 23L, 26L, 28L, 30L, 32L, 33L, 36L, 44L, 47L,
4L, 6L, 9L, 9L, 11L, 11L, 14L, 14L, 15L, 17L, 18L, 20L, 23L,
25L, 26L, 28L, 30L, 32L, 32L, 33L, 33L, 36L, 44L, 50L, 51L,
4L, 6L, 9L, 9L, 11L, 11L, 14L, 14L, 15L, 16L, 17L, 18L, 20L,
20L, 22L, 23L, 26L, 28L, 29L, 30L, 32L, 33L, 36L, 37L, 39L,
43L, 44L, 50L, 51L, 51L, 58L, 4L, 6L, 9L, 9L, 11L, 11L, 14L,
15L, 17L, 18L, 20L, 23L, 26L, 26L, 28L, 28L, 30L, 30L, 32L,
33L, 36L, 37L, 47L, 58L, 4L, 6L, 6L, 9L, 11L, 11L, 14L, 14L,
15L, 17L, 18L, 20L, 23L, 25L, 26L, 28L, 30L, 33L, 35L, 36L,
36L, 44L, 4L, 4L, 6L, 6L, 9L, 9L, 14L, 15L, 17L, 17L, 20L,
22L, 23L, 23L, 25L, 26L, 28L, 29L, 30L, 33L, 36L, 38L, 43L,
44L, 50L, 51L, 58L, 4L, 4L, 6L, 6L, 9L, 9L, 11L, 14L, 15L,
16L, 17L, 20L, 23L, 25L, 26L, 28L, 30L, 32L, 33L, 35L, 36L,
37L, 43L, 44L, 50L, 51L, 52L, 58L, 4L, 6L, 9L, 9L, 11L, 14L,
14L, 15L, 16L, 17L, 18L, 18L, 20L, 20L, 23L, 26L, 28L, 29L,
30L, 32L, 33L, 36L, 43L, 43L, 44L, 50L, 50L, 51L, 52L, 4L,
6L, 9L, 14L, 17L, 17L, 18L, 20L, 23L, 25L, 26L, 28L, 30L,
32L, 33L, 35L, 36L, 43L, 44L, 51L, 52L, 58L, 6L, 9L, 20L,
23L, 23L, 26L, 28L, 36L, 4L, 15L, 6L), Type = structure(c(2L,
1L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L,
2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 1L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
1L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L,
1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L,
2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 1L, 2L, 2L,
2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 2L,
2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 2L, 2L, 2L, 2L,
2L), .Label = c("0", "1"), class = "factor"), Yes = c(2L,
1L, 1L, 3L, 1L, 4L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 3L,
4L, 4L, 1L, 4L, 1L, 1L, 1L, 6L, 2L, 2L, 2L, 1L, 3L, 1L, 7L,
1L, 4L, 1L, 1L, 3L, 1L, 5L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L,
1L, 2L, 4L, 4L, 1L, 7L, 1L, 1L, 1L, 5L, 1L, 1L, 4L, 4L, 1L,
1L, 1L, 9L, 3L, 3L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 1L,
1L, 2L, 1L, 4L, 3L, 2L, 11L, 1L, 1L, 1L, 2L, 4L, 3L, 2L,
3L, 1L, 1L, 1L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 4L, 2L,
7L, 9L, 1L, 3L, 1L, 4L, 1L, 8L, 2L, 1L, 3L, 1L, 0L, 3L, 1L,
1L, 1L, 1L, 1L, 2L, 1L, 2L, 2L, 5L, 1L, 2L, 2L, 1L, 1L, 6L,
3L, 1L, 1L, 0L, 1L, 3L, 8L, 1L, 2L, 1L, 3L, 1L, 1L, 2L, 1L,
2L, 2L, 1L, 1L, 1L, 2L, 0L, 2L, 3L, 2L, 1L, 2L, 3L, 2L, 2L,
1L, 3L, 3L, 6L, 0L, 0L, 1L, 0L, 1L, 1L, 3L, 1L, 1L, 1L, 1L,
2L, 3L, 1L, 7L, 2L, 1L, 5L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 7L,
5L, 4L, 1L, 2L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 1L, 0L, 1L,
3L, 6L, 3L, 1L, 2L, 4L, 2L, 3L, 1L, 2L, 1L, 2L, 1L, 2L, 0L,
2L, 1L, 2L, 2L, 1L, 1L, 1L, 0L, 3L, 1L, 1L, 0L, 2L, 1L, 1L,
1L, 1L), No = c(0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L,
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 2L, 0L, 1L, 0L, 0L, 0L,
0L, 1L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L,
0L, 1L, 0L, 1L, 0L, 0L, 0L, 3L, 0L, 1L, 1L, 0L, 0L, 0L, 1L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L,
1L, 1L, 0L, 1L, 0L, 0L, 3L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 1L,
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
1L, 0L, 0L, 3L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L,
0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L,
0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L,
1L, 0L, 0L, 0L, 0L, 0L)), class = "data.frame", row.names = c(NA,
-242L), .Names = c("Product", "Age", "Type", "Yes", "No"))
Dans les deux cas Type ne semble pas être significatif, pourtant la grande proportion des clients "acheteurs" sont des habitués.
Je crois qu'à ce niveau il faudrait tester le type a part ? J'hésite entre chi2 ou utiliser la même méthode
chi 2 :
- Code:
chi=structure(c(49L, 443L, 3L, 50L), .Dim = c(2L, 2L), .Dimnames = structure(list(
c("Irregular", "Regular"), c("No", "Yes")), .Names = c("", "")), class = "table")
chisq.test(chi)
data: a
X-squared = 0.58696, df = 1, p-value = 0.4436
- Code:
No Yes
Irregular 49 3
Regular 443 50
GLM
- Code:
res= structure(list(Type = structure(1:2, .Label = c("0", "1"), class = "factor"),
Yes = c(49L, 443L), No = c(3L, 50L)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -2L), .Names = c("Type",
"No", "Yes"))
Ty Type No Yes
(fctr) (int) (int)
1 0 49 3
2 1 443 50
anova(glm(cbind(Yes,No) ~ Type, family=binomial),test="Chisq")
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 1 1.1663
Type 1 1.1663 0 0.0000 0.2802
Quelle est le moyen correct pour y arriver ?
En vous remerciant encore pour votre aide précieuse
Lenny,
lenny868- Nombre de messages : 48
Date d'inscription : 16/01/2018
Re: t-test et regression pour variable binaire
L'ordre des variables entrées dans le modèle à de l'importance. Car chaque variable est testée avec la précédente déjà dans le modèle.
Encore une fois, éviter de coder des variables qualitatives par des nombres. C'est clairement une source d'erreur (c'est ce que vous faites à présent avec la variable Tyoe).
Enfin, une régression logistique est largement plus puissante qu'un simple Chi2 sur un table de contingence, notamment -entre autre- car elle permet de tester plusieurs variables explicatives simultanément.
Cordialement, Eric.
Encore une fois, éviter de coder des variables qualitatives par des nombres. C'est clairement une source d'erreur (c'est ce que vous faites à présent avec la variable Tyoe).
Enfin, une régression logistique est largement plus puissante qu'un simple Chi2 sur un table de contingence, notamment -entre autre- car elle permet de tester plusieurs variables explicatives simultanément.
Cordialement, Eric.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Re: t-test et regression pour variable binaire
J'ai remplacé mes binaires avec des "oui" et "non". J'ai tenté de représenter graphiquement la problématique.La fait que Type "oui" (Regulier) ne ressort pas dans les stat m'intrigue. on voit clairement que la bonne majorité des non habitué n'achètent pas. J'essai de comprendre ou se situe mon erreur dans ma démarche
lenny868- Nombre de messages : 48
Date d'inscription : 16/01/2018
Re: t-test et regression pour variable binaire
On cherche à modéliser (à expliquer) le pourcentage de oui/non. Du coup, un graphique pour comprendre doit forcément avoir cette variable, ou la proba de oui, etc. en ordonnée..
Eric.
Eric.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Re: t-test et regression pour variable binaire
Merci de m'avoir fourni ces informations qui m'ont permis d'avancer sur mes données et surtout m'améliorer.
Pour revenir à l'Anova et chisq utilisé. Je comprends mieux qu'en utilisant la GLM on a trois méthode statistiques : le Wald test, le LRT et le score test. Notre approche se situe dans le LRT qui semble être la meilleure méthode parmi ces trois.
Puisque l'anova ajoute séquentiellement les paramètres, elle teste la difference des log des deux modèles et affiche le Pr(>Chi) qui est la différence des log des deux modèles. Je conclus donc que l'hypothèse null est qu'il n'existe pas de différence significative entre les log des deux modèles.
Pour un Pr(>|t|) , l'hypothèse nulle part du principe que le coefficient est nulle (pas d'effet)
Pour Pr(>|z|) , je n'arrive pas faire une conclusion
Est-ce que les deductions que je viens de citer sont correctes ? J'ai regardé pas mal d'articles et d'exemples.
En vous remerciants
Lenny
Pour revenir à l'Anova et chisq utilisé. Je comprends mieux qu'en utilisant la GLM on a trois méthode statistiques : le Wald test, le LRT et le score test. Notre approche se situe dans le LRT qui semble être la meilleure méthode parmi ces trois.
Puisque l'anova ajoute séquentiellement les paramètres, elle teste la difference des log des deux modèles et affiche le Pr(>Chi) qui est la différence des log des deux modèles. Je conclus donc que l'hypothèse null est qu'il n'existe pas de différence significative entre les log des deux modèles.
Pour un Pr(>|t|) , l'hypothèse nulle part du principe que le coefficient est nulle (pas d'effet)
Pour Pr(>|z|) , je n'arrive pas faire une conclusion
Est-ce que les deductions que je viens de citer sont correctes ? J'ai regardé pas mal d'articles et d'exemples.
En vous remerciants
Lenny
lenny868- Nombre de messages : 48
Date d'inscription : 16/01/2018
Re: t-test et regression pour variable binaire
Un test du rapport de vraisemblance (LRT) est - de loin - la démarche qu'il faut préférer, pour plein de raisons. Et c'est ce que fait la fonction anova().lenny868 a écrit:Pour revenir à l'Anova et chisq utilisé. Je comprends mieux qu'en utilisant la GLM on a trois méthode statistiques : le Wald test, le LRT et le score test. Notre approche se situe dans le LRT qui semble être la meilleure méthode parmi ces trois.
Les log?? Il n'y a aucun log dans ces modèles ! Vous voulez dire logit ? Il s'agit de tests de rapport de vraisemblance. On teste donc la différence de vraisemblance entre les deux modèles, ce qui se fait par la comparaison de leur déviance. Ca revient à ce qu'on fait avec un F dans une ANOVA toute simple (i.e., tester la variation entre les deux modèles pondérée par la variation à l'intérieur des modèles). D'ailleurs, un test F n'est rien moins qu'un cas particulier d'un test de rapport de vraisemblance.lenny868 a écrit:Puisque l'anova ajoute séquentiellement les paramètres, elle teste la difference des log des deux modèles et affiche le Pr(>Chi) qui est la différence des log des deux modèles. Je conclus donc que l'hypothèse null est qu'il n'existe pas de différence significative entre les log des deux modèles.
Dans tous les cas, l'hypothèse nulle correspond à l’absence d'effet (coefficient = zero). Si la proba est faible (disons < 0.05) on rejette l'hypothèse nulle avec un risque faible. C'est tout.lenny868 a écrit:Pour un Pr(>|t|) , l'hypothèse nulle part du principe que le coefficient est nulle (pas d'effet)
Pour Pr(>|z|) , je n'arrive pas faire une conclusion
HTH, Eric.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Sujets similaires
» Un test sur variable Integer ~ variable binaire
» URGENT régression avec variable binaire modératrice
» Test statistique pour une régression non linéaire
» régression logistique binaire avec R
» regression logistique binaire impossible
» URGENT régression avec variable binaire modératrice
» Test statistique pour une régression non linéaire
» régression logistique binaire avec R
» regression logistique binaire impossible
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum