#Exercice 1

#a)
taille = 50
Mangue=rnorm(150/3,50,0.2)
Orange=rnorm(150/3,50,0.2)
Eau=rnorm(150/3,50,0.2)

col_mangue=rgb(red=244,green=187,blue=68,maxColorValue=255)
boxplot(Mangue,ylim=c(49,51),col=col_mangue)

plot(Mangue,pch=19,col=col_mangue,ylim=c(49,51),
     cex=1,xaxt="n",xlab="")

boxplot(Orange,ylim=c(49,51),col='orange')

plot(Orange,pch=19,col='orange',ylim=c(49,51),
     cex=1,xaxt="n",xlab="")

boxplot(Eau,ylim=c(49,51),col='cadetblue')

plot(Eau,pch=19,col='cadetblue',ylim=c(49,51),
     cex=1,xaxt="n",xlab="")

boxplot(Mangue,Orange,Eau,
        col=c(col_mangue,'orange','cadetblue'),
        names=c("Mangue","Orange","Eau"),
        ylim=c(49,51),
        main="Distributions de Mangue, Orange, Eau")

#b)

Bouteille=Mangue+Orange+Eau
par(mfrow=c(1,3))
boxplot(Bouteille,ylim=c(148.5,151.5))
plot(Bouteille,ylim=c(148.5,151.5))
hist(Bouteille)       #la distribution est gaussienne

sd(Bouteille)         #estimation de l'écart-type
## [1] 0.3415017
#95% des valeurs sont entre 149,5 et 150,5 (écart de 1) donc 3*sigma donc un écart-type de 1/3


#c)

dev.off()
## null device 
##           1
qqnorm(Bouteille) #nuage longiligne -> on valide l'hypothèse de normalité
#shapiro.test(Bouteille)   # p-value > 5% (pas d'intérêt ici car qqnorm est bon)

#d)

plot(Bouteille,ylim=c(149,151),
     col=ifelse(Bouteille<150.5&Bouteille>149.5,"darkgreen","red"),
     xlab="",xaxt="n",pch=19,ylab="",         #pch = type de points
     main="Quantités de jus de fruits")
abline(h=mean(Bouteille),col="darkgreen",lty=3,lwd=2)
abline(h=149.5,col="blue",lty=3,lwd=2)
abline(h=150.5,col="blue",lty=3,lwd=2)
abline(h=150,col="blue",lty=3,lwd=2)

nb_def=sum(Bouteille>150.5)+sum(Bouteille<149.5) #on cherche cb de bouteille non conforme
propdef=nb_def/taille
propdef
## [1] 0.16
round(prop.test(x=nb_def,n=taille,)$conf.int,2)
## [1] 0.08 0.30
## attr(,"conf.level")
## [1] 0.95
barplot(propdef*100,ylim=c(0,100),col='black',main="proportion de bouteilles \n présentant un défaut de volume")
abline(h=2,col='red')
#var(bouteille)=var(mangue)+var(orange)+var(eau) = 3*0.2² -> sigma(bouteille)=0,2v3=0,34

#Exercice 2

#1)
#-> soit calcul de proba pour confirmer 95% ou calcul des intervalles mu-2sig et mu+2sigma

mu=75
sigma=0.3
mu-2*sigma
## [1] 74.4
mu+2*sigma
## [1] 75.6
pnorm(75.5,mean=mu,sd=sigma)-pnorm(74.5,mean=mu,sd=sigma)
## [1] 0.9044193
#-> 95% de bouteilles contiendront entre 74.4cl et 75.6cl

#2) taille de l'effet = dérive / écart-type. si taille proche de 0, écart petit par rapport à la variabilité, effet non significatif, inutile de faire un test.
#si ratio proche de 0.5, on peut faire un test. ratio >0.5 , effet fort. test sera puissant on peut minimiser la taille de l'éch

ecart=0.2
taille=ecart/sigma
taille
## [1] 0.6666667
#taille 0.66 effet assez fort -> ok pour test 

#3) H0: moy=75 -> test de student 

power.t.test(n=NULL, delta=ecart,sd=sigma, power=0.8,type="one.sample",alternative="two.sided")
## 
##      One-sample t test power calculation 
## 
##               n = 19.66697
##           delta = 0.2
##              sd = 0.3
##       sig.level = 0.05
##           power = 0.8
##     alternative = two.sided
# 1-beta = proba de rejeter H0 quand il faut rejeter H0

#Exercice 3

tableau = matrix(c(39,52,77,61,48,23), nrow=2, byrow=TRUE)
colnames(tableau)=c("A","B","C")
rownames(tableau)=c("Bon","Très Bon")
tableau
##           A  B  C
## Bon      39 52 77
## Très Bon 61 48 23
couleur = colorRampPalette(colors=c("pink","lightblue"))(3)
barplot(c(61,48,23),ylim=c(0,100), col=couleur,names.org=c("A","B","C"),main="Pourcentage de personnes jugeant \n les produits TB")
## Warning in plot.window(xlim, ylim, log = log, ...): "names.org" n'est pas un
## paramètre graphique
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "names.org" n'est pas un paramètre graphique
## Warning in axis(if (horiz) 1 else 2, cex.axis = cex.axis, ...): "names.org"
## n'est pas un paramètre graphique
barplot(tableau, col=c("pink","cadetblue"))

chisq.test(x=tableau)
## 
##  Pearson's Chi-squared test
## 
## data:  tableau
## X-squared = 30.276, df = 2, p-value = 2.665e-07
# pvalue<1/1000, H0 rejetée de manière hautement significative. ces produits n'ont pas été jugés de la même manière. l'appréciation dépend des produit

#comparaison deux à deux

tableau_AB=tableau[ ,-3]
tableau_AB
##           A  B
## Bon      39 52
## Très Bon 61 48
chisq.test(tableau_AB)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tableau_AB
## X-squared = 2.9035, df = 1, p-value = 0.08839
# on ne peut pas rejeter H0. on ne peut pas dire que les produits sont significativement différents
# on a pas réussi à mettre en évidence que A est meilleur que B mais pvalue proche de 0.05 

tableau_BC=tableau[ ,-1]
tableau_BC
##           B  C
## Bon      52 77
## Très Bon 48 23
chisq.test(tableau_BC)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tableau_BC
## X-squared = 12.578, df = 1, p-value = 0.0003904
#on rejet H0. diff très hautement significative

#pas besoin de comparer AC car AB non significativement diff et BC significativement diff
tableau_AC=tableau[ ,-2]
tableau_AC
##           A  C
## Bon      39 77
## Très Bon 61 23
chisq.test(tableau_AC)
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  tableau_AC
## X-squared = 28.099, df = 1, p-value = 1.152e-07
couleur = colorRampPalette(colors=c("lightblue","cadetblue","orange"))(3)
barplot(c(61,48,23),ylim=c(0,100), col=couleur,names.org=c("A","B","C"),main="Pourcentage de personnes jugeant \n les produits TB")
## Warning in plot.window(xlim, ylim, log = log, ...): "names.org" n'est pas un
## paramètre graphique
## Warning in title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...):
## "names.org" n'est pas un paramètre graphique
## Warning in axis(if (horiz) 1 else 2, cex.axis = cex.axis, ...): "names.org"
## n'est pas un paramètre graphique
#Exercice 4

quantité = c(33.03,32.87,33.03,33.03,32.94,32.75,32.81,32.87,32.90,33.14,32.98,32.82,32.79,32.87,32.87,32.86,32.93,32.81,32.94,32.78)

qqnorm(quantité)
t.test(quantité,mu=33,alternative="less")
## 
##  One Sample t-test
## 
## data:  quantité
## t = -4.3638, df = 19, p-value = 0.0001671
## alternative hypothesis: true mean is less than 33
## 95 percent confidence interval:
##      -Inf 32.94023
## sample estimates:
## mean of x 
##    32.901
#Exercice 6

directe =c(27.85,28.35,28.45,27.9,27.45,27.4,28.15,27.65,28.35,28.15,27.95)
IR=c(27.9,28.4,28.4,27.95,27.4,27.5,28.25,27.5,28.5,28.35,27.7)
#représentation avec nuages de points car échantillons appariés
dif=directe-IR
plot(dif)
abline(h=c(0,mean(dif)))
boxplot(dif)

qqnorm(dif)
#shapiro.test(dif)

t.test(x=directe,y=IR,paired=TRUE,alternative="two.sided")
## 
##  Paired t-test
## 
## data:  directe and IR
## t = -0.45408, df = 10, p-value = 0.6595
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
##  -0.10739940  0.07103576
## sample estimates:
## mean difference 
##     -0.01818182
t.test(dif,mu=0,alternative="two.sided")
## 
##  One Sample t-test
## 
## data:  dif
## t = -0.45408, df = 10, p-value = 0.6595
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
##  -0.10739940  0.07103576
## sample estimates:
##   mean of x 
## -0.01818182
#p-value>0.5, on ne rejette pas H0.les résultats ne sont pas significativement dif, on n'a pas mettre en évidence une différences entre les deux.

#Exercice 7

mu=500
#valeurs comprises entre 495 et 505 g -> mu-3*sigma et mu+3*sigma (99,7% des échantillons compris dans cette plage)
#-> 3*sigma = 5 -> sigma = 5/3
sigma=5/3
ecart=2
#pour une doseuse
power.t.test(n=NULL, delta=ecart,sd=sigma, power=0.8,type="one.sample",alternative="two.sided")
## 
##      One-sample t test power calculation 
## 
##               n = 7.587719
##           delta = 2
##              sd = 1.666667
##       sig.level = 0.05
##           power = 0.8
##     alternative = two.sided
#pour deux doseuses
power.t.test(n=NULL, delta=ecart,sd=sigma, power=0.8,type="two.sample",alternative="two.sided")
## 
##      Two-sample t test power calculation 
## 
##               n = 11.94228
##           delta = 2
##              sd = 1.666667
##       sig.level = 0.05
##           power = 0.8
##     alternative = two.sided
## 
## NOTE: n is number in *each* group
dos1=c(499.8,500.4,500.1,500.8,499.9,500.5,501.1,499.3,498.7,500,499.8,499.5)
dos2=c(498.6,498.4,499.7,500.2,500,498.6,500.2,498.7,500.8,499.6,498.5,498.2)

boxplot(dos1,dos2,
        col=c('lightgreen','darkgreen'),
        names=c("Doseuse 1","Doseuse 2"),
        ylim=c(497,502),
        main="Distributions des quantités")
stripchart(list(dos1,dos2),
          method="jitter",
          vertical=TRUE,
          add=TRUE,
          pch=16)
#la doseuse 1 semble fonctionner conformement au cahier de charge
#la doseuse 2 semble sousdoser avec une grande variabilité

par(mfrow=c(1,2))
qqnorm(dos1)
qqnorm(dos2)

var.test(x=dos1,y=dos2,paired=FALSE,alternative="two.sided")
## 
##  F test to compare two variances
## 
## data:  dos1 and dos2
## F = 0.55629, num df = 11, denom df = 11, p-value = 0.3451
## alternative hypothesis: true ratio of variances is not equal to 1
## 95 percent confidence interval:
##  0.1601425 1.9323733
## sample estimates:
## ratio of variances 
##          0.5562869
var(dos1) #facultatif
## [1] 0.4353788
var(dos2)
## [1] 0.7826515
var(dos1)/var(dos2)
## [1] 0.5562869
#pvalue > 0.05 -> H0 est validée, les variances ne semblent pas significativement différentes, même variabilité
#homoscédaticité
t.test(x=dos1,y=dos2,var.equal=TRUE,alternative="two.sided")
## 
##  Two Sample t-test
## 
## data:  dos1 and dos2
## t = 2.1971, df = 22, p-value = 0.03884
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  0.03927522 1.36072478
## sample estimates:
## mean of x mean of y 
##  499.9917  499.2917
#les moy sont significativement différentes
t.test(x=dos1,mu=500,alternative="two.sided")
## 
##  One Sample t-test
## 
## data:  dos1
## t = -0.04375, df = 11, p-value = 0.9659
## alternative hypothesis: true mean is not equal to 500
## 95 percent confidence interval:
##  499.5724 500.4109
## sample estimates:
## mean of x 
##  499.9917
t.test(x=dos2,mu=500,alternative="two.sided")
## 
##  One Sample t-test
## 
## data:  dos2
## t = -2.7736, df = 11, p-value = 0.01811
## alternative hypothesis: true mean is not equal to 500
## 95 percent confidence interval:
##  498.7296 499.8538
## sample estimates:
## mean of x 
##  499.2917
#mean(dos1)=499,99. non dif de 500. la doseuse 1 est conforme
#mean(dos2)=499,3. sousdosage -> faire estimation de la moy par IC

#Estimation de la variance
SCE_1=sum((dos1-mean(dos1))^2)
SCE_2=sum((dos2-mean(dos2))^2)
n1=length(dos1)
n2=length(dos2)
SCE=SCE_2+SCE_1
ddl=n1+n2-2
var_estimee=SCE/ddl
sigma_estimee=sqrt(var_estimee)
sigma_estimee
## [1] 0.7803942
((n1-1)*var(dos1)+(n2-1)*var(dos2))/(n1+n2-2)
## [1] 0.6090152
#Exercice 8

valeurs=c(25.2,24.3,26.8,25.9,22.1,23.8,21.9,22.6,18.4,19.5,18.9,19.9)

Dose=as.factor(c(rep("5ppm",4),rep("10ppm",4),rep("20ppm",4)))
data=data.frame(Dose,valeurs)
data
##     Dose valeurs
## 1   5ppm    25.2
## 2   5ppm    24.3
## 3   5ppm    26.8
## 4   5ppm    25.9
## 5  10ppm    22.1
## 6  10ppm    23.8
## 7  10ppm    21.9
## 8  10ppm    22.6
## 9  20ppm    18.4
## 10 20ppm    19.5
## 11 20ppm    18.9
## 12 20ppm    19.9
str(data)
## 'data.frame':    12 obs. of  2 variables:
##  $ Dose   : Factor w/ 3 levels "10ppm","20ppm",..: 3 3 3 3 1 1 1 1 2 2 ...
##  $ valeurs: num  25.2 24.3 26.8 25.9 22.1 23.8 21.9 22.6 18.4 19.5 ...
dev.off()
## null device 
##           1
plot(valeurs~Dose,col="cadetblue")

# il semble qu'il ait un effet du facteur dose sur le brunissement. on peut conjecturer l'existence de trois groupes suivant le niveau de dose
# H0: mu1=mu2=mu3 ; Il n'y a pas d'effet du facteur dose

#Extraction des données pour les modalités 5ppm
D5=subset(valeurs,Dose=="5ppm")
moy_D5=mean(D5)
residus_D5=D5-moy_D5
residus_D5
## [1] -0.35 -1.25  1.25  0.35
#avec la fonction aov
anova=aov(valeurs~Dose)
residus=resid(anova)
residus
##             1             2             3             4             5 
## -3.500000e-01 -1.250000e+00  1.250000e+00  3.500000e-01 -5.000000e-01 
##             6             7             8             9            10 
##  1.200000e+00 -7.000000e-01  8.604228e-16 -7.750000e-01  3.250000e-01 
##            11            12 
## -2.750000e-01  7.250000e-01
#anova= test unilatéral à droite. pas de parametre "alternative"

par(mfrow=c(2,2))
plot(anova)

#qq residuals : nuage longiligne, distribution des residus normale ou gaussienne, constant leverage: nuage à allure similaire, hypothese d'homoscedastidicité est validée
round(sum(residus),3)
## [1] 0
SCEres=sum(residus^2)
SCEres
## [1] 6.8575
SCEres/9 #estimation de la variance de l'essai
## [1] 0.7619444
SCEtot=sum((valeurs-mean(valeurs))^2)

tapply(valeurs,Dose,summary)
## $`10ppm`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   21.90   22.05   22.35   22.60   22.90   23.80 
## 
## $`20ppm`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   18.40   18.77   19.20   19.18   19.60   19.90 
## 
## $`5ppm`
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   24.30   24.98   25.55   25.55   26.12   26.80
tapply(valeurs,Dose,mean)
##  10ppm  20ppm   5ppm 
## 22.600 19.175 25.550
summary(anova)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## Dose         2  81.43   40.72   53.44 1.01e-05 ***
## Residuals    9   6.86    0.76                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#rejet du H0 ; effet factoriel très hautement significatif

pairwise.t.test(valeurs,Dose,p.adjust.method="holm")
## 
##  Pairwise comparisons using t tests with pooled SD 
## 
## data:  valeurs and Dose 
## 
##       10ppm   20ppm  
## 20ppm 0.00071 -      
## 5ppm  0.00100 8.2e-06
## 
## P value adjustment method: holm
# donne des p-value. toutes les p-value sont < 5%. toutes les moyennes sont deux à deux différents
# si je veux augmenter le niveau de brun, je privilégie 5pmm

#exercice 9

# donnees = read.csv2("data_exo9.csv", sep=";",dec=",", header=TRUE, stringsAsFactors = TRUE)
# 
# Doseuse=donnees$Doseuse
# Masse=donnees$Masse
# 
# str(donnees)
# 
# # 1) facteur étudié : doseuse , variable : masse
# 
# plot(Masse~Doseuse,col=c("lightpink","lightblue","lightyellow"))
# points(Masse~Doseuse, col=c("blue"),pch=19)
# 
# # boites de tailles différentes, on peut conjecturer que la doseuse 3 ne se comportent pas comme les autres et à une tendance à surdoser, les doseuses 1 et 2 semblent se comportent de manière similaire et permettent de répondre au cahier de charge (proche de 800 g) 
# # ne pas oublier titre 
# 
# #ANOVA
# anova=aov(Masse~Doseuse)
# par(mfrow=c(2,2))
# plot(anova)
# 
# # qqnorm: nuage longiligne -> distribution des résidus est gaussienne, residuals vs factor levels : 3 nuages à allures similaires -> on vérifie l'hypothèse d'homoscédasticité
# 
# #normalité des résidus (facultatif)
# residus=resid(anova)
# shapiro.test(residus)
# residus
# 
# #tableau anova
# summary(anova)
# summary(anova)[[1]][2,3] #carré moyen résiduel = 22.64 (estimation de la variance)
# ET=sqrt(22.64)
# ET
# # l'écart-type est trop grand car 95% des éch pèsent entre mu-3*sigma et mu+3*sigma
# #il y a un effet significatif du facteur doseuse, on peux considérer qu'au moins une des doseuses à un fonctionnement différent des autres
#  
# #comparaison multiples
# sort(tapply(Masse,Doseuse,mean))
# pairwise.t.test(Masse,Doseuse,p.adjust.method="holm")
# # les doseuses 1 et 2 ont un fonctionnement similaire, elles forment un groupe. la doseuse 3 est différente des autres, elle met environ en moy 5 ou 6 g de trop
#  
# dev.off()
# QN=800
# Comp_cible=tapply(Masse,Doseuse,mean)-QN
# Comp_cible
# barplot(Comp_cible,col=c("lightpink","lightblue","lightyellow"),main="Comparaison à QN",ylim=c(-6,6))
# 
# # est ce que la doseuse 2 est loin de 800 -> test de student
# Masses_2=subset(donnees,Doseuse=="D2")$Masse
# t.test(Masses_2,mu=800,alternative="less")
# # la doseuse 2 ne sousdose pas