#Chapitre 5
#page 225
library(BioStatR)
attach(Mesures5)
table(graines,espece)
##        espece
## graines bignone glycine blanche glycine violette laurier rose
##       1       0               7                4            0
##       2       0              19               22            0
##       3       0              11               16            0
##       4       0              10                6            0
##       5       0               5                5            0
##       6       0               1                1            0
##       7       0               1                2            0
table(graines,espece,useNA="ifany")
##        espece
## graines bignone glycine blanche glycine violette laurier rose
##    1          0               7                4            0
##    2          0              19               22            0
##    3          0              11               16            0
##    4          0              10                6            0
##    5          0               5                5            0
##    6          0               1                1            0
##    7          0               1                2            0
##    <NA>      70               0                0           72
(table.cont<-table(factor(graines),espece,dnn=c("nbr.graines","espece"),
  exclude=c("bignone","laurier rose")))
##            espece
## nbr.graines glycine blanche glycine violette
##        1                  7                4
##        2                 19               22
##        3                 11               16
##        4                 10                6
##        5                  5                5
##        6                  1                1
##        7                  1                2
##        <NA>               0                0
#page 226
(table.cont<-table(factor(graines),espece,dnn=c("nbr.graines","espece"),
  exclude=c("bignone","laurier rose"),useNA="no"))
##            espece
## nbr.graines glycine blanche glycine violette
##           1               7                4
##           2              19               22
##           3              11               16
##           4              10                6
##           5               5                5
##           6               1                1
##           7               1                2
#En plus : deuxi\`eme mani\`ere de faire
(table.cont<-table(factor(graines),espece,dnn=c("nbr.graines","espece"),
  exclude=c("bignone","laurier rose",NA)))
##            espece
## nbr.graines glycine blanche glycine violette
##           1               7                4
##           2              19               22
##           3              11               16
##           4              10                6
##           5               5                5
##           6               1                1
##           7               1                2
library(ggplot2)
#Couleur
ggplot(Mesures,aes(x=masse,y=taille,color=espece))+geom_point(size=3,shape=19)+
  ggtitle("Taille en fonction de la masse par esp\`ece")

#Noir et blanc
ggplot(Mesures,aes(x=masse,y=taille,shape=espece))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()

#page 228
#En plus : code figure 51A
pdf("fig51A.pdf")
print(ggplot(Mesures,aes(x=masse,y=taille,shape=espece))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw())
dev.off()
## quartz_off_screen 
##                 2
addmargins(table.cont)
##            espece
## nbr.graines glycine blanche glycine violette Sum
##         1                 7                4  11
##         2                19               22  41
##         3                11               16  27
##         4                10                6  16
##         5                 5                5  10
##         6                 1                1   2
##         7                 1                2   3
##         Sum              54               56 110
#page 227
print(prop.table(table.cont),digits=3)
##            espece
## nbr.graines glycine blanche glycine violette
##           1         0.06364          0.03636
##           2         0.17273          0.20000
##           3         0.10000          0.14545
##           4         0.09091          0.05455
##           5         0.04545          0.04545
##           6         0.00909          0.00909
##           7         0.00909          0.01818
#page 228
margin.table(table.cont,1)
## nbr.graines
##  1  2  3  4  5  6  7 
## 11 41 27 16 10  2  3
margin.table(table.cont,2)
## espece
##  glycine blanche glycine violette 
##               54               56
margin.table(prop.table(table.cont),1)
## nbr.graines
##          1          2          3          4          5          6          7 
## 0.10000000 0.37272727 0.24545455 0.14545455 0.09090909 0.01818182 0.02727273
margin.table(prop.table(table.cont),2)
## espece
##  glycine blanche glycine violette 
##        0.4909091        0.5090909
#page 229
prop.table(table.cont,1)
##            espece
## nbr.graines glycine blanche glycine violette
##           1       0.6363636        0.3636364
##           2       0.4634146        0.5365854
##           3       0.4074074        0.5925926
##           4       0.6250000        0.3750000
##           5       0.5000000        0.5000000
##           6       0.5000000        0.5000000
##           7       0.3333333        0.6666667
#page 230
prop.table(table.cont,2)
##            espece
## nbr.graines glycine blanche glycine violette
##           1      0.12962963       0.07142857
##           2      0.35185185       0.39285714
##           3      0.20370370       0.28571429
##           4      0.18518519       0.10714286
##           5      0.09259259       0.08928571
##           6      0.01851852       0.01785714
##           7      0.01851852       0.03571429
#page 233
cov(masse,taille)
## [1] 24.80598
#page 234
cor(masse,taille)
## [1] 0.7520708
#page 235
require(BioStatR)
eta2(Mesures5$taille,Mesures5$espece)
## [1] 0.1195181
#page 236
#Couleur
plot(taille~masse,col=rainbow(4)[espece],pch=19,data=Mesures)
legend("bottomright",levels(Mesures$espece),pch=19,col=rainbow(4))
title("Taille en fonction de la masse par esp\`ece")

#Noir et blanc
plot(taille~masse,pch=1:4,data=Mesures)       
legend("bottomright",levels(Mesures$espece),pch=1:4)
title("Taille en fonction de la masse par esp\`ece")

#En plus : code figure 51B
pdf("fig51B.pdf")
plot(taille~masse,pch=1:4,data=Mesures)       
legend("bottomright",levels(Mesures$espece),pch=1:4)
title("Taille en fonction de la masse par esp\`ece")
dev.off()
## quartz_off_screen 
##                 2
#Les m^emes figures avec ggplot2 (code page 225 et 226)
library(ggplot2)
#Couleur
ggplot(Mesures,aes(x=masse,y=taille,color=espece))+geom_point(size=3,shape=19)+
  ggtitle("Taille en fonction de la masse par esp\`ece")

#Noir et blanc
ggplot(Mesures,aes(x=masse,y=taille,shape=espece))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()

#page 238
library(lattice)
show.settings()

show.settings(x=standard.theme(color=FALSE))

lattice.options(default.theme=standard.theme(color=FALSE))

#page 239
lattice.options(default.theme=NULL)
trellis.device(theme=standard.theme(color=FALSE))
dev.off()
## quartz_off_screen 
##                 2
trellis.device(color=FALSE)
dev.off()
## quartz_off_screen 
##                 2
#Pour obtenir les graphiques en noir et blanc
trellis.device(theme=standard.theme(color=FALSE),new=FALSE)

#page 240
xyplot(taille~masse,groups=espece,auto.key = list(corner = c(1, 0)),
  main="Taille en fonction de la masse par esp\`ece",data=Mesures)

xyplot(taille~masse|espece,groups=espece,data=Mesures)

xyplot(taille~masse|espece,groups=espece,scales="free",data=Mesures)

#page 242
xyplot(taille~masse|espece,data=Mesures,groups=espece,
       prepanel=function(x,y) prepanel.loess(x,y,span=1),
       panel=function(x,y,subscripts,groups) {
         panel.grid(h=-1,v=2)
         panel.xyplot(x,y,pch=groups[subscripts])
         panel.loess(x,y,span=1,lwd=2,pch=groups[subscripts])})

#d\'ebut page 242 et fin page 243 
xyplot(taille~masse|espece,data=Mesures,groups=espece,scales="free",
  prepanel=function(x,y) prepanel.loess(x,y,span=1),
  panel=function(x,y,subscripts,groups) {
    panel.grid(h=-1,v=2)
    panel.xyplot(x,y,pch=groups[subscripts])
    panel.loess(x,y,span=1,lwd=2,pch=groups[subscripts])
    }
  )

#page 243
xyplot(masse+masse_sec~taille|espece,data=Mesures5,scales="free",
  layout=c(2,2),auto.key=list(x=-.01,y=.37,corner=c(0,0)))

#d\'ebut page 243 et fin page 244 
xyplot(masse+masse_sec~taille|espece,data=Mesures5,scales="free",
  layout=c(2,2),auto.key=list(x=-.01,y=.37,points=FALSE,
  col=c("black","grey50"),font=2,corner=c(0,0)),
  panel=function(x,y,subscripts,groups) {
    panel.grid(h=-1,v= 2)
    panel.xyplot(x,y,pch=19,col=c("black","grey50")[groups[subscripts]])
    }
  )

#page 244
#contruction des graphiques pr\'ec\'edents en couleur
trellis.device(theme=NULL,color = TRUE,new=FALSE)

#ceux de la page 240
xyplot(taille~masse,groups=espece,auto.key = list(corner = c(1, 0)),
       main="Taille en fonction de la masse par esp\`ece",data=Mesures)

xyplot(taille~masse|espece,groups=espece,data=Mesures,pch=19)

xyplot(taille~masse|espece,groups=espece,scales="free",data=Mesures,pch=19)

#ceux de la page 242
xyplot(taille~masse|espece,data=Mesures,groups=espece,prepanel=function(x,y) prepanel.loess(x,y,span=1),
       panel=function(x,y,subscripts,groups) {
         panel.grid(h=-1,v=2)
         panel.xyplot(x,y,pch=19,col=groups[subscripts])
         panel.loess(x,y,span=1,lwd=2,col=groups[subscripts])})

xyplot(taille~masse|espece,data=Mesures,groups=espece,scales="free",
       prepanel=function(x,y) prepanel.loess(x,y,span=1),
       panel=function(x,y,subscripts,groups) {
         panel.grid(h=-1,v=2)
         panel.xyplot(x,y,pch=19,col=groups[subscripts])
         panel.loess(x,y,span=1,lwd=2,col=groups[subscripts])})

#ceux de la page 243
xyplot(masse+masse_sec~taille|espece,data=Mesures5,scales="free",layout=c(2,2),
  auto.key=list(x=-.01,y=.37,corner=c(0,0)))

xyplot(masse+masse_sec~taille|espece,data=Mesures5,scales="free",layout=c(2,2),
  auto.key=list(x=-.01,y=.37,points=FALSE,col=c("black","red"),corner=c(0,0)),
  panel=function(x,y,subscripts,groups) {
    panel.grid(h=-1,v= 2)
    panel.xyplot(x,y,pch=19,col=groups[subscripts])
    }
  )

#page 246
#Contruction des graphiques pr\'ec\'edents avec ggplot2
#Noir et blanc
library(ggplot2)
#ceux de la page 240
ggplot(Mesures,aes(x=masse,y=taille,shape=espece))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()+
  theme(legend.position="bottom")

ggplot(Mesures,aes(x=masse,y=taille,shape=espece))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()+
  facet_wrap(~espece)

ggplot(Mesures,aes(x=masse,y=taille,shape=espece))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()+
  facet_wrap(~espece,scales = "free")

#ceux de la page 242
ggplot(Mesures,aes(x=masse,y=taille,shape=espece))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()+
  facet_wrap(~espece)+stat_smooth(color="grey50")
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

ggplot(Mesures,aes(x=masse,y=taille,shape=espece))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()+
  facet_wrap(~espece,scales = "free")+stat_smooth(color="grey50")
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

#ceux de la page 243
ggplot(Mesures5,aes(x=taille,y=masse,shape=espece))+geom_point(aes(x=taille,y=masse_sec),
  color="gray50")+geom_point()+ggtitle("Taille en fonction de la masse par esp\`ece")+
  theme_bw()+facet_wrap(~espece,scales = "free")+stat_smooth(color="black")+
  stat_smooth(aes(x=taille,y=masse_sec),color="grey50")
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## Warning: Removed 3 rows containing non-finite values (stat_smooth).
## Warning: Removed 3 rows containing missing values (geom_point).

#Pour faire appara^itre les deux variables dans la l\'egende en plus des groupes li\'es #aux esp\`eces
if(!("reshape" %in% rownames(installed.packages()))){install.packages("reshape")}
library(reshape)
Mesures5.long <- melt(Mesures5, id = c("taille","espece"), 
  measure = c("masse", "masse_sec"))
ggplot(Mesures5.long,aes(x=taille,y=value,shape=espece,color=variable))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()+
  facet_wrap(~espece,scales = "free")+stat_smooth(aes(color=variable))+
  scale_color_grey(start=.1,end=.5)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## Warning: Removed 3 rows containing non-finite values (stat_smooth).
## Removed 3 rows containing missing values (geom_point).

pdf("chap5fig511ggplot.pdf")
print(ggplot(Mesures5.long,aes(x=taille,y=value,shape=espece,color=variable))+
  geom_point()+ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()+
  facet_wrap(~espece,scales = "free")+stat_smooth(aes(color=variable))+
  scale_color_grey(start=.1,end=.5)
)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## Warning: Removed 3 rows containing non-finite values (stat_smooth).
## Removed 3 rows containing missing values (geom_point).
dev.off()
## quartz_off_screen 
##                 2
#page 247
#Couleur
#ceux de la page 240
ggplot(Mesures,aes(x=masse,y=taille,color=espece))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()

ggplot(Mesures,aes(x=masse,y=taille,color=espece))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()+
  facet_wrap(~espece)

ggplot(Mesures,aes(x=masse,y=taille,color=espece))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()+
  facet_wrap(~espece,scales = "free")

#ceux de la page 242
ggplot(Mesures,aes(x=masse,y=taille,color=espece))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()+
  facet_wrap(~espece)+stat_smooth()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

ggplot(Mesures,aes(x=masse,y=taille,color=espece))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()+
  facet_wrap(~espece,scales = "free")+stat_smooth()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

#ceux de la page 243
ggplot(Mesures5,aes(x=taille,y=masse,color=espece))+
  geom_point(aes(x=taille,y=masse_sec,color=espece),shape=22)+geom_point(shape=19)+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()+
  facet_wrap(~espece,scales = "free")+stat_smooth()+
  stat_smooth(aes(x=taille,y=masse_sec))
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## Warning: Removed 3 rows containing non-finite values (stat_smooth).
## Removed 3 rows containing missing values (geom_point).

#page 248
#Pour faire appara^itre les deux variables dans la l\'egende en plus des groupes li\'es
#aux esp\`eces
if(!("reshape" %in% rownames(installed.packages()))){install.packages("reshape")}
library(reshape)
ggplot(Mesures5.long,aes(x=taille,y=value,color=variable,shape=espece))+geom_point()+
  ggtitle("Taille en fonction de la masse par esp\`ece")+theme_bw()+
  facet_wrap(~espece,scales = "free")+stat_smooth(aes(color=variable))
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## Warning: Removed 3 rows containing non-finite values (stat_smooth).
## Removed 3 rows containing missing values (geom_point).

#Exercice 5.1
#page 249
#2)
outer(1:6,1:6,"+")
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,]    2    3    4    5    6    7
## [2,]    3    4    5    6    7    8
## [3,]    4    5    6    7    8    9
## [4,]    5    6    7    8    9   10
## [5,]    6    7    8    9   10   11
## [6,]    7    8    9   10   11   12
outer(1:6,1:6,pmin)
##      [,1] [,2] [,3] [,4] [,5] [,6]
## [1,]    1    1    1    1    1    1
## [2,]    1    2    2    2    2    2
## [3,]    1    2    3    3    3    3
## [4,]    1    2    3    4    4    4
## [5,]    1    2    3    4    5    5
## [6,]    1    2    3    4    5    6
(effs<-table(outer(1:6,1:6,"+"),outer(1:6,1:6,pmin)))
##     
##      1 2 3 4 5 6
##   2  1 0 0 0 0 0
##   3  2 0 0 0 0 0
##   4  2 1 0 0 0 0
##   5  2 2 0 0 0 0
##   6  2 2 1 0 0 0
##   7  2 2 2 0 0 0
##   8  0 2 2 1 0 0
##   9  0 0 2 2 0 0
##   10 0 0 0 2 1 0
##   11 0 0 0 0 2 0
##   12 0 0 0 0 0 1
#page 251
#1)
require(BioStatR)
plotcdf2(Mesures5$taille,Mesures5$masse,f=0,"taille","poids",theme="bw")

#En plus : autres options pour plotcdf2 
plotcdf2(Mesures5$taille,Mesures5$masse,f=0,"taille","poids",col="gray50")

plotcdf2(Mesures5$taille,Mesures5$masse,f=0,"taille","poids")

plotcdf2(Mesures5$taille,Mesures5$masse,f=0,"taille","poids",theme="1")

plotcdf2(Mesures5$taille,Mesures5$masse,f=0,"taille","poids",theme="2")

plotcdf2(Mesures5$taille,Mesures5$masse,f=0,"taille","poids",theme="3")

#page 252
#2)
margin.table(effs)
## [1] 36
plotcdf2(2:12,1:6,f=effs/36,"somme des d\'es","valeur du plus petit",the="bw")             

#En plus : autres options pour plotcdf2 
plotcdf2(2:12,1:6,f=effs/36,"somme des d\'es","valeur du plus petit",col="gray50")

plotcdf2(2:12,1:6,f=effs/36,"somme des d\'es","valeur du plus petit")             

plotcdf2(2:12,1:6,f=effs/36,"somme des d\'es","valeur du plus petit",theme="1")   

plotcdf2(2:12,1:6,f=effs/36,"somme des d\'es","valeur du plus petit",theme="2")   

plotcdf2(2:12,1:6,f=effs/36,"somme des d\'es","valeur du plus petit",theme="3")   

#3)
margin.table(effs,1)
## 
##  2  3  4  5  6  7  8  9 10 11 12 
##  1  2  3  4  5  6  5  4  3  2  1
#page 253
margin.table(effs,2)
## 
##  1  2  3  4  5  6 
## 11  9  7  5  3  1
print(prop.table(margin.table(effs,1)),3)
## 
##      2      3      4      5      6      7      8      9     10     11     12 
## 0.0278 0.0556 0.0833 0.1111 0.1389 0.1667 0.1389 0.1111 0.0833 0.0556 0.0278
print(prop.table(margin.table(effs,2)),3)
## 
##      1      2      3      4      5      6 
## 0.3056 0.2500 0.1944 0.1389 0.0833 0.0278
#4)
print(prop.table(effs,1),digit=3)
##     
##          1     2     3     4     5     6
##   2  1.000 0.000 0.000 0.000 0.000 0.000
##   3  1.000 0.000 0.000 0.000 0.000 0.000
##   4  0.667 0.333 0.000 0.000 0.000 0.000
##   5  0.500 0.500 0.000 0.000 0.000 0.000
##   6  0.400 0.400 0.200 0.000 0.000 0.000
##   7  0.333 0.333 0.333 0.000 0.000 0.000
##   8  0.000 0.400 0.400 0.200 0.000 0.000
##   9  0.000 0.000 0.500 0.500 0.000 0.000
##   10 0.000 0.000 0.000 0.667 0.333 0.000
##   11 0.000 0.000 0.000 0.000 1.000 0.000
##   12 0.000 0.000 0.000 0.000 0.000 1.000
#page 254
print(prop.table(effs,2),digit=3)
##     
##           1      2      3      4      5      6
##   2  0.0909 0.0000 0.0000 0.0000 0.0000 0.0000
##   3  0.1818 0.0000 0.0000 0.0000 0.0000 0.0000
##   4  0.1818 0.1111 0.0000 0.0000 0.0000 0.0000
##   5  0.1818 0.2222 0.0000 0.0000 0.0000 0.0000
##   6  0.1818 0.2222 0.1429 0.0000 0.0000 0.0000
##   7  0.1818 0.2222 0.2857 0.0000 0.0000 0.0000
##   8  0.0000 0.2222 0.2857 0.2000 0.0000 0.0000
##   9  0.0000 0.0000 0.2857 0.4000 0.0000 0.0000
##   10 0.0000 0.0000 0.0000 0.4000 0.3333 0.0000
##   11 0.0000 0.0000 0.0000 0.0000 0.6667 0.0000
##   12 0.0000 0.0000 0.0000 0.0000 0.0000 1.0000
#Exercice 5.2
#1)
cov(Mesures5[,1:4])
##              masse   taille graines masse_sec
## masse     81.02811 24.80598      NA        NA
## taille    24.80598 13.42640      NA        NA
## graines         NA       NA      NA        NA
## masse_sec       NA       NA      NA        NA
cor(Mesures5[,1:4])
##               masse    taille graines masse_sec
## masse     1.0000000 0.7520708      NA        NA
## taille    0.7520708 1.0000000      NA        NA
## graines          NA        NA       1        NA
## masse_sec        NA        NA      NA         1
#page 255
#2)
cov(Mesures5[,1:4],use="pairwise.complete.obs")
##              masse    taille   graines masse_sec
## masse     81.02811 24.805983 10.028632 28.579414
## taille    24.80598 13.426403  4.541877  8.089633
## graines   10.02863  4.541877  1.892327  3.510584
## masse_sec 28.57941  8.089633  3.510584 10.707880
cor(Mesures5[,1:4],use="pairwise.complete.obs")
##               masse    taille   graines masse_sec
## masse     1.0000000 0.7520708 0.8024751 0.9685758
## taille    0.7520708 1.0000000 0.7812662 0.6731472
## graines   0.8024751 0.7812662 1.0000000 0.8076360
## masse_sec 0.9685758 0.6731472 0.8076360 1.0000000