diff --git a/server.R b/server.R new file mode 100644 index 0000000000000000000000000000000000000000..7c1a1f4da6ebe4d44340950a254c05b100cfc329 --- /dev/null +++ b/server.R @@ -0,0 +1,981 @@ +Sys.setlocale("LC_ALL", "fr_FR.UTF-8")#to be sure that accents in text will be allowed in plots + + +library(shiny) +library(plotrix) + + + +shinyServer(function(input, output){ + + rv<-reactiveValues() # Create a reactiveValues object, to let us use settable reactive values + + rv$last.takesample.value<-0 + rv$samples.z<-list() + + rv$lastAction<-'none'# To start out, lastAction == NULL, meaning nothing clicked yet + + rv$lastDist<-" " + + rv$lastp<-0.5 + rv$lastminrud<-1 + rv$lastmaxrud<-6 + rv$lastdf<-5 + rv$lastdf1<-5 + rv$lastdf2<-20 + rv$lastm1<-8 + rv$lastm2<-4 + rv$lastsd1<-1.5 + rv$lastsd2<-1.1 + + rv$lastN<-0 + + # An observe block for each button, to record that the action happened + observe({ + if (input$takesample != 0) { + rv$lastAction <- 'takesample' + } + }) + observe({ + if (input$reset != 0) { + rv$lastAction <- 'reset' + rv$last.takesample.value<-0 + rv$samples.z<-list() + } + }) + + + getSamples<-reactive({ + if(input$takesample > rv$last.takesample.value && rv$lastAction == "takesample"){ + return(isolate({#Now do the expensive stuff + samples<-list() + for (i in 1:input$ns){ + if (input$dist == "DN") {samples[[i]]<-rnorm(input$n)} + if (input$dist == "DBin") {samples[[i]]<-rbinom(n = 1, size = input$n, prob = input$p)} + #if (input$dist == "DLN"){samples[[i]]<-rlnorm(input$n)} + if (input$dist == "DUD") {x <- min(input$RUD) : max(input$RUD) + samples[[i]]<-sample(x, input$n, replace = TRUE)} + if (input$dist == "DU") {samples[[i]]<-runif (input$n)} + if (input$dist == "DE") {samples[[i]]<-rexp(input$n)} + if (input$dist == "DC") {samples[[i]]<-rchisq(input$n, df = input$df)} + if (input$dist == "DF") {samples[[i]]<-rf(input$n,df1 = input$df1,df2 = input$df2)} + if (input$dist == "DB") {samples[[i]]<-c(rnorm(input$n/2,input$m1, input$sd1), rnorm(input$n/2, input$m2, input$sd2))} + } + return(samples) + })) + } else { + return(NULL) + }}) + + + getPlotHeight <- function() { + if(input$display=="default") { + unit.height<-320 #cannot be auto because height is already "auto" in ui and double auto = conflict + } + if(input$display=="1024") { + unit.height<-280 + } + if(input$display=="800") { + unit.height<-250 + } + return(2*unit.height) + } + + getPlotWidth <- function() { + if(input$display=="default") { + full.plot.width<-1310-400#"auto" + } + if(input$display=="1024") { + full.plot.width<-900-200 + } + if(input$display=="800") { + full.plot.width<-700-200 + } + if(input$visM && input$display!="default"){ + full.plot.width<-full.plot.width+400 + } + return(full.plot.width) + } + + + getInputValues<-reactive({ + return(input)#collect all inputs + }) + + getComputedValues<-reactive({ + samples<-list() + samples<-getSamples() + rv$samples.z<-c(rv$samples.z,samples) + + + v<-getInputValues() # get all values of input list + cv<-list()#created empty computed values list + cv$samples.x<-list() + cv$n.samples<-length(rv$samples.z) + cv$vx <- v$sx^2 + + ## Computation of sample related values ## + if(cv$n.samples>0){ + for(i in 1:cv$n.samples){ + if (v$dist == "DN") {cv$samples.x[[i]]<-round((rv$samples.z[[i]]*v$sx)+v$mx,2)} + if (v$dist == "DBin") {cv$samples.x[[i]]<-round(rv$samples.z[[i]],2)} + #if (v$dist == "DLN"){cv$samples.x[[i]]<-round((rv$samples.z[[i]]*v$lsx)+v$lmx,2)} + if (v$dist == "DUD") {cv$samples.x[[i]]<-rv$samples.z[[i]]} + if (v$dist == "DU") {cv$samples.x[[i]]<-round(rv$samples.z[[i]]*v$b,2)} + if (v$dist == "DE") {cv$samples.x[[i]]<-round(rv$samples.z[[i]]*(1/v$Lambda),2)} + if (v$dist == "DC") {cv$samples.x[[i]]<-round(rv$samples.z[[i]], 2)} + if (v$dist == "DF") {cv$samples.x[[i]]<-round(rv$samples.z[[i]], 2)} + if (v$dist == "DB") {cv$samples.x[[i]]<-round(rv$samples.z[[i]], 2)} + } + + ## Automatic reset en cas de modification des paramètres + if (rv$lastDist!=v$dist) { + rv$lastAction <- 'changeDist' + rv$last.takesample.value<-0 + rv$samples.z <- list() + cv$samples.x <- list() + } + + if (rv$lastN!=v$n) { + rv$lastAction <- 'changeN' + rv$last.takesample.value<-0 + rv$samples.z <- list() + cv$samples.x <- list() + } + + if (rv$lastp!=v$p) { + rv$lastAction <- 'changep' + rv$last.takesample.value<-0 + rv$samples.z <- list() + cv$samples.x <- list() + } + + if (rv$lastminrud!=min(v$RUD)) { + rv$lastAction <- 'changeminrud' + rv$last.takesample.value<-0 + rv$samples.z <- list() + cv$samples.x <- list() + } + + if (rv$lastmaxrud!=max(v$RUD)) { + rv$lastAction <- 'changemaxrud' + rv$last.takesample.value<-0 + rv$samples.z <- list() + cv$samples.x <- list() + } + + if (rv$lastdf!=v$df) { + rv$lastAction <- 'changedf' + rv$last.takesample.value<-0 + rv$samples.z <- list() + cv$samples.x <- list() + } + + if (rv$lastdf1!=v$df1) { + rv$lastAction <- 'changedf1' + rv$last.takesample.value<-0 + rv$samples.z <- list() + cv$samples.x <- list() + } + + if (rv$lastdf2!=v$df2) { + rv$lastAction <- 'changedf2' + rv$last.takesample.value<-0 + rv$samples.z <- list() + cv$samples.x <- list() + } + + if (rv$lastm1!=v$m1) { + rv$lastAction <- 'changem1' + rv$last.takesample.value<-0 + rv$samples.z <- list() + cv$samples.x <- list() + } + + if (rv$lastm2!=v$m2) { + rv$lastAction <- 'changem2' + rv$last.takesample.value<-0 + rv$samples.z <- list() + cv$samples.x <- list() + } + + if (rv$lastsd1!=v$sd1) { + rv$lastAction <- 'changesd1' + rv$last.takesample.value<-0 + rv$samples.z <- list() + cv$samples.x <- list() + } + + if (rv$lastsd2!=v$sd2) { + rv$lastAction <- 'changesd2' + rv$last.takesample.value<-0 + rv$samples.z <- list() + cv$samples.x <- list() + + } + + ##Pour passer d'une liste à une matrice + if(v$dist == "DBin"){ + cv$samples.x.mat <- matrix(nrow = cv$n.samples, ncol = 1) + cv$samples.p.mat <- matrix(nrow = cv$n.samples, ncol = 1) + for(i in 1:cv$n.samples){ + cv$samples.x.mat[i,1] <- cv$samples.x[[i]] + cv$samples.p.mat[i,1] <-cv$samples.x[[i]]/v$n + } + } + else{ + cv$samples.x.mat <- matrix(nrow = cv$n.samples, ncol = v$n) + for(i in 1:cv$n.samples){ + cv$samples.x.mat[i,] <- cv$samples.x[[i]] + } + } + + ## Computation of descriptives + cv$samples.x.m.vec<-c() # vector of mean values, each line a sample + cv$samples.x.sd.vec<-c() + cv$samples.x.m.vec<-round(apply(cv$samples.x.mat,1,mean),2)#means of samples + cv$samples.x.sd.vec<-round(apply(cv$samples.x.mat,1,sd),2)#sds of samples + if(v$dist == "DBin"){ + cv$samples.p.m.vec<-round(apply(cv$samples.p.mat,1,mean),2)#means of samples + cv$samples.p.sd.vec<-round(apply(cv$samples.p.mat,1,sd),2)#sds of samples + } + + ## Define subset to plot + cv$samples.x.n.toshow<-0 + cv$samples.x.from<-1 + if(cv$n.samples>5){ + cv$samples.x.from<-cv$n.samples-5+1 + } + cv$samples.x.to<-cv$n.samples + + + if(v$dist =="DBin"){ + cv$samples.x.mat.toshow<-matrix(cv$samples.x.mat[cv$samples.x.from:cv$samples.x.to,],ncol=1) + } + else{ + cv$samples.x.mat.toshow<-matrix(cv$samples.x.mat[cv$samples.x.from:cv$samples.x.to,],ncol=v$n) + } + + cv$samples.x.m.vec.toshow<-cv$samples.x.m.vec[cv$samples.x.from:cv$samples.x.to] + cv$samples.x.sd.vec.toshow<-cv$samples.x.sd.vec[cv$samples.x.from:cv$samples.x.to] + cv$samples.x.i.vec.toshow<-c(cv$samples.x.from:cv$samples.x.to) + cv$samples.x.n.toshow<-length(cv$samples.x.mat.toshow[,1]) + + + cv$samples.x.m.m <- round(mean(cv$samples.x.m.vec),4) + cv$samples.x.v.m <- round(var(cv$samples.x.m.vec),4) + + if(v$dist == "DBin"){ + cv$samples.p.m.m <- round(mean(cv$samples.p.m.vec),4) + cv$samples.p.v.m <- round(var(cv$samples.p.m.vec),4) + + cv$vx<-v$sx^2 + cv$lvx<-v$lsx^2 + + } + + ## Valeurs qui serviront à définir les limites des axes + hf<-hist(cv$samples.x.mat, freq= TRUE, breaks = 50) + freqcl<- hf$counts + cv$maxfreqcl<-max(freqcl) + n.obs.tot<-length(cv$samples.x.mat) + probcl <- freqcl/n.obs.tot + cv$maxprobcl<-max(probcl) + + + #if(cv$n.samples <100){breaks =10} + #else{breaks <- sqrt(cv$n.samples)} + + #hm<-hist(cv$samples.x.m.vec, freq = TRUE, breaks = breaks) + #cv$freqmcl <- unlist(hm[2]) + + #densm<-density(cv$samples.x.m.vec) + #cv$highdensm <- unlist(densm[2]) + } + + ## Last takesample value + rv$last.takesample.value<-v$takesample + rv$lastDist<-v$dist + rv$lastp<-v$p + rv$lastminrud<-min(v$RUD) + rv$lastmaxrud<-max(v$RUD) + rv$lastdf<-v$df + rv$lastdf1<-v$df1 + rv$lastdf2<-v$df2 + rv$lastm1<-v$m1 + rv$lastm2<-v$m2 + rv$lastsd1<-v$sd1 + rv$lastsd2<-v$sd2 + + rv$lastN<-v$n + + + return(cv) + + }) + + + output$doublePlot <- renderPlot({ + + v <- getInputValues () + cv <- getComputedValues () + + par(mfcol = c(2,2)) + m<-matrix(c(1,2,3,4),2,2,byrow=TRUE) + layout(m, width=c(4,3)) # + + ## Set graphic parameters + if(v$display=="default") { + cex.main.title<-2 + cex.title<-1.5 + cex.samples<-1.5 + cex.axis<-1.1 + cex.label<-1.2 + } + if(v$display=="1024") { + cex.main.title<-1.75 + cex.title<-1.2 + cex.samples<-1.2 + cex.axis<-1 + cex.label<-1 + } + if(v$display=="800") { + cex.main.title<-1.5 + cex.title<-1 + cex.samples<-1 + cex.axis<-0.8 + cex.label<-0.8 + } + + + #Définition des limites de l'axe des abscisses pour le plot + + if(v$dist=="DN"&& v$range =="SameRange") {x.lim.inf<-min(v$rangeXdn) + x.lim.sup<-max(v$rangeXdn)} + if(v$dist=="DBin"&& v$range =="SameRange") {x.lim.inf<-min(v$rangeXdbin) + x.lim.sup<-max(v$rangeXdbin)} + #if(v$dist=="DLN"&& v$range =="SameRange"){x.lim.inf<-min(v$rangeXdln) + # x.lim.sup<-max(v$rangeXdln)} + if(v$dist=="DUD"&& v$range =="SameRange") {x.lim.inf<-min(v$rangeXdud) + x.lim.sup<-max(v$rangeXdud)} + if(v$dist=="DU"&& v$range =="SameRange") {x.lim.inf<-min(v$rangeXdu) + x.lim.sup<-max(v$rangeXdu)} + if(v$dist=="DE"&& v$range =="SameRange") {x.lim.inf<-min(v$rangeXde) + x.lim.sup<-max(v$rangeXde)} + if(v$dist=="DC"&& v$range =="SameRange") {x.lim.inf<-min(v$rangeXdc) + x.lim.sup<-max(v$rangeXdc)} + if(v$dist=="DF"&& v$range =="SameRange") {x.lim.inf<-min(v$rangeXdf) + x.lim.sup<-max(v$rangeXdf)} + if(v$dist=="DB"&& v$range =="SameRange") {x.lim.inf<-min(v$rangeXdb) + x.lim.sup<-max(v$rangeXdb)} + + if(v$dist=="DN"&& v$range =="DifRange") {Obs.lim.inf<-min(v$rangeObsdn) + Obs.lim.sup<-max(v$rangeObsdn) + Xbar.lim.inf<-min(v$rangeXbardn) + Xbar.lim.sup<-max(v$rangeXbardn)} + if(v$dist=="DBin"&& v$range =="DifRange") {Obs.lim.inf<-min(v$rangeObsdbin) + Obs.lim.sup<-max(v$rangeObsdbin) + Xbar.lim.inf<-min(v$rangeXbardbin) + Xbar.lim.sup<-max(v$rangeXbardbin)} + #if(v$dist=="DLN"&& v$range =="DifRange"){Obs.lim.inf<-min(v$rangeObsdln) + # Obs.lim.sup<-max(v$rangeObsdln) + # Xbar.lim.inf<-min(v$rangeXbardln) + # Xbar.lim.sup<-max(v$rangeXbardln)} + if(v$dist=="DUD"&& v$range =="DifRange") {Obs.lim.inf<-min(v$rangeObsdud) + Obs.lim.sup<-max(v$rangeObsdud) + Xbar.lim.inf<-min(v$rangeXbardud) + Xbar.lim.sup<-max(v$rangeXbardud)} + if(v$dist=="DU"&& v$range =="DifRange") {Obs.lim.inf<-min(v$rangeObsdu) + Obs.lim.sup<-max(v$rangeObsdu) + Xbar.lim.inf<-min(v$rangeXbardu) + Xbar.lim.sup<-max(v$rangeXbardu)} + if(v$dist=="DE"&& v$range =="DifRange") {Obs.lim.inf<-min(v$rangeObsde) + Obs.lim.sup<-max(v$rangeObsde) + Xbar.lim.inf<-min(v$rangeXbarde) + Xbar.lim.sup<-max(v$rangeXbarde)} + if(v$dist=="DC"&& v$range =="DifRange") {Obs.lim.inf<-min(v$rangeObsdc) + Obs.lim.sup<-max(v$rangeObsdc) + Xbar.lim.inf<-min(v$rangeXbardc) + Xbar.lim.sup<-max(v$rangeXbardc)} + if(v$dist=="DF"&& v$range =="DifRange") {Obs.lim.inf<-min(v$rangeObsdf) + Obs.lim.sup<-max(v$rangeObsdf) + Xbar.lim.inf<-min(v$rangeXbardf) + Xbar.lim.sup<-max(v$rangeXbardf)} + if(v$dist=="DB"&& v$range =="DifRange") {Obs.lim.inf<-min(v$rangeObsdb) + Obs.lim.sup<-max(v$rangeObsdb) + Xbar.lim.inf<-min(v$rangeXbardb) + Xbar.lim.sup<-max(v$rangeXbardb)} + + + #Définition des X conditionnellement à la distribution + if(v$dist=="DN"){X=seq(-10,40, length=1000)} + if(v$dist=="DBin"){X=0:v$n} + #if(v$dist=="DLN"){X=seq(-10,40, length=1000)} + if(v$dist=="DUD"){X= min(v$RUD):max(v$RUD)} + if(v$dist=="DU"){X=seq(-5,25, length=1000)} + if(v$dist=="DE"){X=seq(-5,20, length=1000)} + if(v$dist=="DC"){X=seq(-5,60, length=1000)} + if(v$dist=="DF"){X=seq(-5,10, length=1000)} + + #Définition de la densité théorique + getY <-reactive({ + if (v$dist=="DN") + return(dnorm(X, mean=v$mx, sd=v$sx)) + if (v$dist=="DBin") + return(dbinom(X, size=v$n, prob=v$p)) + #if (v$dist=="DLN") + # return(dlnorm(X,meanlog=v$lmx, sdlog =v$lsx)) + if (v$dist=="DU") + return(dunif (X, min=0, max=v$b)) + if (v$dist=="DE") + return (dexp(X, rate=v$Lambda)) + if (v$dist=="DC") + return (dchisq(X, df=v$df)) + if (v$dist=="DF") + return(df(X,df1=v$df1, df2=v$df2)) + if (v$dist=="DB") + return(density(c(rnorm(1000000/2,v$m1, v$sd1), rnorm(1000000/2, v$m2, v$sd2)))) + }) + + #------------------- Output 1 : ------------------------------ + #Afficher les observations pour 5 échantillons prélevés + #Afficher la distribution théorique d'origine (optionnel + #------------------------------------------------------------- + + if (v$dist == "DB"){ + dens<-getY() + d<-unlist(dens[2]) + y.delta<-max(d) + } + else{ + if (v$dist == "DUD"){ + p <- rep(1/length(X), length(X)) + y.delta<-p[1]+p[1]/length(X) + } + else{ + y.delta <- max(getY()) + } + } + + cv$samples.y.mat.toshow<-c() + if(cv$n.samples>0 && cv$samples.x.n.toshow>0){ + if(v$dist == "DBin"){ + cv$samples.y.mat.toshow<-matrix(rep(y.delta/(5+1)*c(1:cv$samples.x.n.toshow),length(cv$samples.x.mat.toshow[,1])),nrow=length(cv$samples.x.mat.toshow[,1]), ncol = 1) + } + else{ + cv$samples.y.mat.toshow<-matrix(rep(y.delta/(5+1)*c(1:cv$samples.x.n.toshow),length(cv$samples.x.mat.toshow[,1])),nrow=length(cv$samples.x.mat.toshow[,1]), ncol = v$n) + } + } + + ## Définition de pour l'axe des X + if(v$range =="SameRange"){ + lim.inf<-x.lim.inf + lim.sup<-x.lim.sup + } + if(v$range =="DifRange"){ + lim.inf<-Obs.lim.inf + lim.sup<-Obs.lim.sup + } + range<-lim.sup-lim.inf + + + ## Définition du nb de graduations pour l'axe des X + if(v$dist == "DBin"){ + nbgrad<-10 + } + else{ + if(v$dist == "DUD"){ + nbgrad<-range + } + else{ + if(range>10){nbgrad <- range} + if(range>5 & range <=10){nbgrad <- range*2} + if(range<=5){nbgrad <- range*4} + }} + + ## Test about range of 'x' + + if(cv$n.samples>0){ + if(max(cv$samples.x.mat) > lim.sup || min(cv$samples.x.mat) < lim.inf) {error <-1} + else{error <-0} + } + + +##############PLOT######################## +par(mai=c(0.5,0.8,0.5,0.5)) +### CAS N°1 : Si aucune donnée : + if(is.null(cv$samples.x.mat)){ + + ### CAS N°1.1 : Si l'option "afficher la distribution théorique est cochée : + if(v$showreality){ + #Si distribution Binomiale + if (v$dist=="DBin"){ + Y <- getY() + plot(Y, type = "h",bty="n", xaxs="i",yaxs="i",xlab ="x",cex.lab=cex.label,cex.axis=cex.axis, ylab = expression(P(x)), xlim=c(lim.inf,lim.sup),xaxp=c(lim.inf,lim.sup,nbgrad), lwd=2, col = "red", main = "") +# mtext(bquote(paste("Echantillons prélevés :")), side=3,line=1,adj=0.5, cex=cex.label) + mtext(bquote(paste(X*"~"*Bin(n*","*p)," ",X*"~"*Bin(.(v$n)*","*.(v$p)),sep='')), side=3,line=-1,adj=0.05, cex=cex.label) + } + else{ + #Si distribution Uniforme Discrète + if (v$dist=="DUD"){ + plot(X, p, col = "red", type = "h",bty="n", xaxs="i",yaxs="i",,cex.lab=cex.label,cex.axis=cex.axis, xlab =" ", ylab=" ",lwd = 2, xlim=c(lim.inf,lim.sup),xaxp=c(lim.inf,lim.sup,nbgrad),ylim = c(0, y.delta), main = "") +# mtext(bquote(paste("Echantillons prélevés :")), side=3,line=1,adj=0.5, cex=cex.label) + mtext(bquote(paste(X*"~"*U*"{"*.(min(v$RUD))*",...,"*.(max(v$RUD))*"}",sep='')), side=3,line=1,adj=-0.1, cex=cex.label) + points(X,p, col = "red", lwd = 2, pch = 19) + lines(X, p, lty = 3) + } + #Pour les autres distributions + else{ + plot(c(0),c(-5),lty=1,lwd=1,col="black",yaxt="n",bty="n",las=1,xaxs="i",yaxs="i",cex.lab=cex.label,cex.axis=cex.axis,xlim=c(lim.inf,lim.sup),ylim=c(0,y.delta),xlab="",ylab=" ",xaxp=c(lim.inf,lim.sup,nbgrad),main="") + axis(2,las=2,yaxp=c(0,signif(y.delta,1),5),cex.axis=cex.axis) + if (v$dist == "DB"){ + dens <- getY() + lines(dens) + } + else { + Y<-getY() + points(X,Y, type="l") + } +# mtext(bquote(paste("Echantillons prélevés :")), side=3,line=1,adj=0.5, cex=cex.label) + + if(v$dist=="DN"){mtext(bquote(paste(X*"~"*N(mu*","*sigma^2) ," ", X*"~"*N(.(v$mx)*","*.(cv$vx)),sep='')), side=3,line=1,adj=-0.1, cex=cex.label)} + if(v$dist=="DU"){mtext(bquote(paste(X*"~"*U(theta[1]*","*theta[2]) ," ", X*"~"*U(.0*","*.(v$b)),sep='')), side=3,line=1,adj=-0.1, cex=cex.label)} + if(v$dist=="DE"){mtext(bquote(paste(X*"~"*E(lambda) ," ", X*"~"*E(.(v$Lambda)),sep='')), side=3,line=1,adj=-0.1, cex=cex.label)} + if(v$dist=="DC"){mtext(bquote(paste(X*"~"*chi^2, (nu)," ", X*"~"*chi^2,(.(v$df)),sep='')), side=3,line=1,adj=-0.1, cex=cex.label)} + if(v$dist=="DF"){mtext(bquote(paste(X*"~"*F[nu[1]*","*nu[2]] ," ", X*"~"*F[.(v$df1)*","*.(v$df2)],sep='')), side=3,line=1,adj=-0.1, cex=cex.label)} + + }} + } + + ###CAS N°1.2 : Si l'option "afficher la distribution théorique" n'est pas cochée : + else{ + #par(mai=c(0.5,0.8,0.5,0.5)) + plot(c(0),c(-5),lty=1,lwd=1,col="black",yaxt="n",bty="n",las=1,xaxs="i",yaxs="i",cex.lab=cex.label,cex.axis=cex.axis,xlim=c(lim.inf,lim.sup),ylim=c(0,y.delta),xlab="",ylab=" ",xaxp=c(lim.inf,lim.sup,nbgrad),main="") +# mtext(bquote(paste("Echantillons prélevés :")), side=3,line=1,adj=0.5, cex=cex.label) + } + } + +##CAS N°2 : Si 1 ou plusieurs échantillons ont déjà été tirés : + else{ + ### CAS N°2.1 : Si conflit entre limites des X et observations prélevées : afficher un msg d'erreur + if(error==1){ + plot(1:10,1:10, col = "white", xlab="",ylab="",xaxt="n",yaxt="n",bty="n",type='l') + text(5,8, labels = bquote("Certaines valeurs dépassent les limites défines en abscisse."), cex = cex.label, col = "red") + text(5,7, labels = bquote("Modifiez le choix de l'étendue au moyen du slider adéquat."), cex = cex.label, col = "red") + } + ### CAS N°2.2 : Si pas d'erreur : + if(error==0){ + ### CAS N°2.2.1 : Si l'option "afficher la distribution théorique" est cochée : + if(v$showreality){ + ##Si la distribution est binomiale : + if (v$dist=="DBin"){ + Y <- getY() + plot(Y, type = "h",bty="n", xaxs="i",yaxs="i",xlab ="x", ylab = expression(P(x)),cex.lab=cex.label,cex.axis=cex.axis, xlim=c(lim.inf,lim.sup),xaxp=c(lim.inf,lim.sup,nbgrad), lwd=2, col = "red", main = "") +# mtext(bquote(paste("Echantillons prélevés :")), side=3,line=1,adj=0.5, cex=cex.label) + mtext(bquote(paste(X*"~"*Bin(n*","*p)," ",X*"~"*Bin(.(v$n)*","*.(v$p)),sep='')), side=3,line=-1,adj=0.05, cex=cex.label) + for(i in 1:cv$samples.x.n.toshow){ + points(cv$samples.x.mat.toshow[i,],cv$samples.y.mat.toshow[i,],cex=cex.samples*0.8) + text(cv$samples.x.m.vec.toshow[i],cv$samples.y.mat.toshow[i,1],labels=bquote(x[.(cv$samples.x.i.vec.toshow[i])]),cex=cex.samples*1.2,col="blue") + } + } + + else{ + ##Si la distribution est uniforme discète : + if (v$dist=="DUD"){ + plot(X, p, col = "red", type = "h",bty="n", xaxs="i",yaxs="i", ylab=" ",cex.lab=cex.label,cex.axis=cex.axis,lwd = 2, xlim=c(lim.inf,lim.sup),xaxp=c(lim.inf,lim.sup,nbgrad),ylim = c(0, y.delta), main = "") + mtext(bquote(paste("Distribution théorique")), side=3,line=1,adj=0.5, cex=cex.label) + mtext(bquote(paste(X*"~"*U*"{"*.(min(v$RUD))*",...,"*.(max(v$RUD))*"}",sep='')), side=3,line=1,adj=-0.1, cex=cex.label) + points(X,p, col = "red", lwd = 2, pch = 19) + lines(X, p, lty = 3) + for(i in 1:cv$samples.x.n.toshow){ + points(jitter(cv$samples.x.mat.toshow[i,],0.5),jitter(cv$samples.y.mat.toshow[i,],0.5),cex=cex.samples*0.8) + text(cv$samples.x.m.vec.toshow[i],cv$samples.y.mat.toshow[i,1],labels=bquote(bar(x)[.(cv$samples.x.i.vec.toshow[i])]),cex=cex.samples*1.2,col="blue") + } + } + + ##Pour toutes les autres distributions : + else{ + plot(c(0),c(-5),lty=1,lwd=1,col="black",yaxt="n",bty="n",las=1,xaxs="i",yaxs="i",cex.lab=cex.label,cex.axis=cex.axis,xlim=c(lim.inf,lim.sup),ylim=c(0,y.delta),xlab="",ylab=" ",xaxp=c(lim.inf,lim.sup,nbgrad),main="") +# mtext(bquote(paste("Echantillons prélevés :")), side=3,line=1,adj=0.5, cex=cex.label) + for(i in 1:cv$samples.x.n.toshow){ + points(cv$samples.x.mat.toshow[i,],cv$samples.y.mat.toshow[i,],cex=cex.samples*0.8) + text(cv$samples.x.m.vec.toshow[i],cv$samples.y.mat.toshow[i,1],labels=bquote(bar(x)[.(cv$samples.x.i.vec.toshow[i])]),cex=cex.samples*1.2,col="blue") + } + axis(2,las=2,yaxp=c(0,signif(y.delta,1),5),cex.axis=cex.axis) + + if (v$dist == "DB"){ + dens <- getY() + lines(dens) + } + else { + Y<-getY() + points(X,Y, type="l") + } + + if(v$dist=="DN"){mtext(bquote(paste(X*"~"*N(mu*","*sigma^2) ," ", X*"~"*N(.(v$mx)*","*.(v$sx)),sep='')), side=3,line=1,adj=-0.1, cex=cex.label)} + if(v$dist=="DU"){mtext(bquote(paste(X*"~"*U(theta[1]*","*theta[2]) ," ", X*"~"*U(.0*","*.(v$b)),sep='')), side=3,line=1,adj=-0.1, cex=cex.label)} + if(v$dist=="DE"){mtext(bquote(paste(X*"~"*E(lambda) ," ", X*"~"*E(.(v$Lambda)),sep='')), side=3,line=1,adj=-0.1, cex=cex.label)} + if(v$dist=="DC"){mtext(bquote(paste(X*"~"*chi^2, (nu)," ", X*"~"*chi^2,(.(v$df)),sep='')), side=3,line=1,adj=-0.1, cex=cex.label)} + if(v$dist=="DF"){mtext(bquote(paste(X*"~"*F[nu[1]*","*nu[2]] ," ", X*"~"*F[.(v$df1)*","*.(v$df2)],sep='')), side=3,line=1,adj=-0.1, cex=cex.label)} + } + } + } + + ###CAS N°2.2.2 : Si la case "Afficher la distribution théorique n'est pas cochée": + else{ + ##Si la distribution est binomiale : + if (v$dist=="DBin"){ + plot(c(0),c(-5),lty=1,lwd=1,col="black",yaxt="n",bty="n",las=1,xaxs="i",yaxs="i",cex.lab=cex.label,cex.axis=cex.axis,xlim=c(lim.inf,lim.sup),ylim=c(0,y.delta),xlab="",ylab=" ",xaxp=c(lim.inf,lim.sup,nbgrad), main="") #, +# mtext(bquote(paste("Echantillons prélevés :")), side=3,line=1,adj=0.5, cex=cex.label) + for(i in 1:cv$samples.x.n.toshow){ + points(cv$samples.x.mat.toshow[i,],cv$samples.y.mat.toshow[i,],cex=cex.samples*0.8) + text(cv$samples.x.m.vec.toshow[i],cv$samples.y.mat.toshow[i,1],labels=bquote(x[.(cv$samples.x.i.vec.toshow[i])]),cex=cex.samples*1.2,col="blue") + } + } + else{ + plot(c(0),c(-5),lty=1,lwd=1,col="black",yaxt="n",bty="n",las=1,xaxs="i",yaxs="i",cex.lab=cex.label,cex.axis=cex.axis,xlim=c(lim.inf,lim.sup),ylim=c(0,y.delta),xlab="",ylab=" ",xaxp=c(lim.inf,lim.sup,nbgrad), main="") +# mtext(bquote(paste("Echantillons prélevés :")), side=3,line=1,adj=0.5, cex=cex.label) + for(i in 1:cv$samples.x.n.toshow){ + if(v$dist=="DUD"){points(jitter(cv$samples.x.mat.toshow[i,],0.5),jitter(cv$samples.y.mat.toshow[i,],0.5),cex=cex.samples*0.8)} + else{points(cv$samples.x.mat.toshow[i,],cv$samples.y.mat.toshow[i,],cex=cex.samples*0.8)} + text(cv$samples.x.m.vec.toshow[i],cv$samples.y.mat.toshow[i,1],labels=bquote(bar(x)[.(cv$samples.x.i.vec.toshow[i])]),cex=cex.samples*1.2,col="blue") + } + }}} + } + + + + + + #------------------- Output 2 : -------------------------------------- + #Afficher les stats descriptives des échantillons prélevés (optionnel) + #--------------------------------------------------------------------- + +### CAS n°1 : Si aucune donnée : + if(is.null(cv$samples.x.mat)){ + par(mai=c(0.5,0,0.5,0)) + plot(c(0,1),c(0,0),col="white",xaxt="n",yaxt="n",xlab="",ylab="",ylim=c(0,y.delta),bty="n",las=1) + mtext(bquote(paste("Descriptives : ", N == .(0), sep="")),side=3,line=1,adj=0, at=0.00, cex=cex.label) + } + +### CAS n°2 : Si 1 ou plusieurs échantillons ont déjà été tirés : + else{ + par(mai=c(0.5,0,0.5,0)) + plot(c(0,1),c(0,0),col="white",xaxt="n",yaxt="n",xlab="",ylab="",ylim=c(0,y.delta),bty="n",las=1) + +### CAS N°2.1 : Si l'option "afficher les stat descr" est cochée : + if(v$empPl){ + mtext(bquote(paste("Descriptives : ", N == .(cv$n.samples), sep="")),side=3,line=1,adj=0, at=0.00, cex=cex.label) + + if(cv$samples.x.n.toshow>0){ + if(v$dist =="DBin"){ + for(i in 1:cv$samples.x.n.toshow){ + text(0,cv$samples.y.mat.toshow[i,1],labels=bquote(paste(x[.(cv$samples.x.i.vec.toshow[i])] == .(sprintf("%.2f",cv$samples.x.mat.toshow[i])),sep="")),col="blue",pos=4, cex=cex.samples) + text(0.3,cv$samples.y.mat.toshow[i,1],labels=bquote(paste(p[.(cv$samples.x.i.vec.toshow[i])] == .(sprintf("%.2f",cv$samples.x.mat.toshow[i]/v$n)),sep="")),pos=4,cex=cex.samples) + } + } + else{ + for(i in 1:cv$samples.x.n.toshow){ + text(0,cv$samples.y.mat.toshow[i,1],labels=bquote(paste(bar(x)[.(cv$samples.x.i.vec.toshow[i])] == .(sprintf("%.2f",cv$samples.x.m.vec.toshow[i])),sep="")),col="blue",pos=4, cex=cex.samples) + text(0.3,cv$samples.y.mat.toshow[i,1],labels=bquote(paste(s[.(cv$samples.x.i.vec.toshow[i])] == .(sprintf("%.2f",cv$samples.x.sd.vec.toshow[i])),sep="")),pos=4,cex=cex.samples) + } + } + if(cv$n.samples>1 && v$dist!="DBin"){ + mtext(bquote(paste("E(",bar(X),")" == .(cv$samples.x.m.m), sep="")),side=1,line=1,adj=0, at=0.01, cex=cex.label) + mtext(bquote(paste("V(",bar(X),")" == .(cv$samples.x.v.m), sep="")),side=1,line=1,adj=0, at=0.31, cex=cex.label) + } + if(cv$n.samples>1 && v$dist=="DBin"){ + mtext(bquote(paste("E(",X,")" == .(cv$samples.x.m.m), sep="")),side=1,line=-1,adj=0, at=0.01, cex=cex.label) + mtext(bquote(paste("V(",X,")" == .(cv$samples.x.v.m), sep="")),side=1,line= 1,adj=0, at=0.01, cex=cex.label) + mtext(bquote(paste("E(",p,")" == .(cv$samples.p.m.m), sep="")),side=1,line=-1,adj=0, at=0.31, cex=cex.label) + mtext(bquote(paste("V(",p,")" == .(cv$samples.p.v.m), sep="")),side=1,line= 1,adj=0, at=0.31, cex=cex.label) + + } + + }} + ### CAS N°2.2 : Si l'option "afficher les stat descr" n'est pas cochée : + else {} + } + + + + + #------------------- Output 3 : -------------------------------------- + #Histogramme des données d'échantillonnage + #Afficher leur distribution (optionnel) + #--------------------------------------------------------------------- + + ##Définition des limites pour l'axe des X + + if(v$range =="SameRange"){ + lim.inf<-x.lim.inf + lim.sup<-x.lim.sup + } + if(v$range =="DifRange"){ + lim.inf<-Obs.lim.inf + lim.sup<-Obs.lim.sup + } + range<-lim.sup-lim.inf + + + ## Définition du nb de graduations pour l'axe des X + if(v$dist == "DBin"){ + nbgrad<-10 + } + else{ + if(v$dist == "DUD"){ + nbgrad<-range + } + else{ + if(range>10){nbgrad <- range} + if(range>5 & range <=10){nbgrad <- range*2} + if(range<=5){nbgrad <- range*4} + }} + + ## Test about range of 'x' + if(cv$n.samples>0){ + if(max(cv$samples.x.mat) > lim.sup || min(cv$samples.x.mat) < lim.inf) {error <-1} + else{error <-0} + } + + +##############PLOT######################## +par(mai=c(0.5,0.8,0.5,0.5)) + +### CAS N°1 : Si aucune donnée : + +if(is.null(cv$samples.x.mat)){ + Y <- c() + X <-c() + plot(X, Y, main="",yaxt="n",bty="n",cex.axis=cex.axis,cex.lab = cex.label,xlim=c(lim.inf,lim.sup),ylim=c(0,y.delta),xlab="", ylab = "",xaxp=c(lim.inf,lim.sup,nbgrad)) + if(v$dist == "DBin"){mtext(bquote(paste("Distribution du nombre de succès (N tentatives)")), side=3,line=1,adj=0.5, cex=cex.label)} + else{ + if(v$dist == "DUD"){mtext(bquote(paste("Distribution des données d'échantillonnage")), side=3,line=1,adj=0.5, cex=cex.label)} + else{mtext(bquote(paste("Histogramme des données d'échantillonnage")), side=3,line=1,adj=0.5, cex=cex.label)} + } + } + + +##CAS N°2 : Si 1 ou plusieurs échantillons ont déjà été tirés : + else{ + ### CAS N°2.1 : Si conflit entre limites des X et observations prélevées : afficher un msg d'erreur + if(error==1){ + plot(1:10,1:10, col = "white", xlab="",ylab="",xaxt="n",yaxt="n",bty="n",type='l') + text(5,8, labels = bquote("Certaines valeurs dépassent les limites défines en abscisse."), cex = cex.label, col = "red") + text(5,7, labels = bquote("Modifiez le choix de l'étendue au moyen du slider adéquat."), cex = cex.label, col = "red") + } + ### CAS N°2.2 : Si pas d'erreur + if(error==0){ + + #Si la distribution est Binomiale & que l'option "afficher la densité normale" est cochée : + if (v$dist=="DBin"&&v$showNdensity) { + par(mai=c(0.5,0.8,0.5,0.5), xaxs="i",yaxs="i") + hist(cv$samples.x.mat, probability=TRUE,yaxt="n",bty="n",xaxs="i",yaxs="i",xlab="",ylab=HTML("Densité"), xlim=c(lim.inf,lim.sup),xaxp=c(lim.inf,lim.sup,nbgrad), col = 'grey',main = "", breaks = 50, cex.lab = cex.label) #, ylim=c(0,cv$maxfreqcl*1.1) + axis(2,las=2,cex.axis=cex.axis) + mtext(bquote(paste("Distribution du nombre de succès (N tentatives)")), side=3,line=1, adj=0.5, cex=cex.label) + if(cv$n.samples>1){ + mtext(bquote(paste(X%~~%N(np*","*np(1-p)),sep='')), side=3,line=-1,adj=0.05, cex=cex.label) + mtext(bquote(paste(X%~~%N(.(cv$samples.x.m.m)*","*.(cv$samples.x.v.m)),sep='')), side=3,line=-3,adj=0.05, cex=cex.label) + lim_dens_inf <- min (cv$samples.x.mat)-1 + lim_dens_sup <- max(cv$samples.x.mat)+1 + xfit<-seq(lim_dens_inf,lim_dens_sup,length=1000) + yfit<-dnorm(xfit,mean=mean(cv$samples.x.mat),sd=sd(cv$samples.x.mat)) + lines(xfit, yfit, col="blue", type = 'l',lwd=2) + }} + + #Si la distribution est Binomiale mais que l'option "afficher la densité normale" n'est pas cochée : + else { + if(v$dist=="DBin"){ + par(mai=c(0.5,0.8,0.5,0.5), xaxs="i",yaxs="i") + hist(cv$samples.x.mat, freq=TRUE,yaxt="n",bty="n",xaxs="i",yaxs="i",xlab="",ylab=HTML("Fréquences"), xlim=c(lim.inf,lim.sup), ylim=c(0,cv$maxfreqcl*1.1),xaxp=c(lim.inf,lim.sup,nbgrad), col = 'grey',main = "", breaks = 50, cex.lab = cex.label) + axis(2,las=2,cex.axis=cex.axis) + mtext(bquote(paste("Distribution du nombre de succès (N tentatives)")), side=3,line=1, adj=0.5, cex=cex.label) + } + + #Si la distribution est Uniforme discrète et que l'option "afficher la distribution théorique" est cochée: + else{ + if (v$dist=="DUD"){ + if(v$showreality){ + par(mai=c(0.5,0.8,0.5,0.5), xaxs="i",yaxs="i") + b<-barplot(prop.table(table(cv$samples.x.mat)), bty="n", yaxt="n", col = 'grey',main = "",space = 2,xlab="", ylab=HTML("Fréquences relatives"), cex.lab = cex.label) + axis(2,las=2,cex.axis=cex.axis) + mtext(bquote(paste("Distribution des données d'échantillonnage")), side=3,line=1, adj=0.5, cex=cex.label) + abline(h=p, lty = 3, lwd = 2) + } + #Si la distribution est Uniforme discrète et que l'option "afficher la distribution théorique" n'est pas cochée: + else{ + par(mai=c(0.5,0.8,0.5,0.5), xaxs="i",yaxs="i") + b<-barplot(table(cv$samples.x.mat), bty="n", yaxt="n", col = 'grey',main = "",space = 2,xlab="", ylab=HTML("Fréquences"), cex.lab = cex.label) + axis(2,las=2,cex.axis=cex.axis) + mtext(bquote(paste("Distribution des données d'échantillonnage")), side=3,line=1, adj=0.5, cex=cex.label) + } + } + #Pour toutes les autres distributions quand l'option "afficher la distribution théorique" est cochée: + else{ + if(v$showreality){ + par(mai=c(0.5,0.8,0.5,0.5), xaxs="i",yaxs="i") + hist(cv$samples.x.mat, probability=TRUE,yaxt="n",bty="n", xaxs="i",yaxs="i",xlab="", ylab=HTML("Densité"),xlim=c(lim.inf,lim.sup),xaxp=c(lim.inf,lim.sup,nbgrad),col = 'grey',main = "",breaks=50, cex.lab=cex.label) #,ylim =c(0, max(c(y.delta, cv$maxprobcl))*1.1) + axis(2,las=2,cex.axis=cex.axis) + mtext(bquote(paste("Histogramme des données d'échantillonnage")), side=3,line=1,adj=0.5, cex=cex.label) + #afficher la distribution théorique + if (v$dist == "DB"){lines(getY())} + else{lines(X, getY(), type = 'l')} + } + #Pour toutes les autres distributions quand l'option "afficher la distribution théorique" n'est pas cochée: + else{ + par(mai=c(0.5,0.8,0.5,0.5), xaxs="i",yaxs="i") + hist(cv$samples.x.mat, freq=TRUE,yaxt="n",bty="n",xaxs="i",yaxs="i",xlab="",ylab=HTML("Fréquences"), xlim=c(lim.inf,lim.sup), ylim=c(0,cv$maxfreqcl*1.1),xaxp=c(lim.inf,lim.sup,nbgrad), col = 'grey',main = "", breaks = 50, cex.lab = cex.label) + axis(2,las=2,cex.axis=cex.axis) + mtext(bquote(paste("Histogramme des données d'échantillonnage")), side=3,line=1,adj=0.5, cex=cex.label) + } + }} + } +}} + + #------------------- Output 4 : -------------------------------------- + #Histogramme des moyennes d'échantillonnage + #Afficher leur distribution (optionnel) + #--------------------------------------------------------------------- + + + ##Définition des limites pour l'axe des X + if(v$range =="SameRange"){ + lim.inf<-x.lim.inf + lim.sup<-x.lim.sup + } + if(v$range =="DifRange"){ + lim.inf<-Xbar.lim.inf + lim.sup<-Xbar.lim.sup + } + + range <-lim.sup-lim.inf + + ## Définition du nb de graduations pour l'axe des X + if(v$dist == "DBin"){ + nbgrad<-10 + } + else{ + if(v$dist == "DUD"){ + nbgrad<-range + } + else{ + if(range>10){nbgrad <- range} + if(range>5 & range <=10){nbgrad <- range*2} + if(range<=5){nbgrad <- range*4} + } + } + + ##Définition du nb d'intervalles pour l'histogramme + if(v$dist =="DE" || v$dist =="DF") { + breaks<-seq(lim.inf, lim.sup, 0.01) + } + else { + breaks<-seq(lim.inf, lim.sup, 0.05) + } + + ## Test about range of 'x' + + if(v$dist == "DBin"){ + if(cv$n.samples>0){ + if(max(cv$samples.p.mat) > lim.sup || min(cv$samples.p.mat) < lim.inf) {error <-1} + else{error <-0} + } + } + else{ + if(cv$n.samples>0){ + #for (i in 1: length(cv$samples.x.m.vec)){ + if(max(cv$samples.x.m.vec) > lim.sup || min(cv$samples.x.m.vec)< lim.inf) {error <-1} + else{error <-0} + #} + } + } + + ##############PLOT######################## + par(mai=c(0.5,0.8,0.5,0.5)) + + ### CAS N°1 : Si aucune donnée : + + if(is.null(cv$samples.x.mat)){ + Y <- c() + X <-c() + par(mai=c(0.5,0.8,0.5,0), xaxs="i",yaxs="i") + plot(X, Y, main="",yaxt="n",bty="n",xlab="", ylab = "", xlim=c(lim.inf,lim.sup),ylim=c(0,y.delta), cex.axis=cex.axis,cex.lab = cex.label, ,xaxp=c(lim.inf,lim.sup,nbgrad)) + if(v$dist == "DBin"){mtext(bquote(paste("Distribution de la proportion de succès")), side=3,line=1,adj=0.5, cex=cex.label)} + else{mtext(bquote(paste("Histogramme des moyennes d'échantillonnage")), side=3,line=1,adj=0.5, cex=cex.label)} + } + + ##CAS N°2 : Si 1 ou plusieurs échantillons ont déjà été tirés : + + else{ + + ### CAS N°2.1 : Si conflit entre limites des X et observations prélevées : afficher un msg d'erreur + if(error==1){ + plot(1:10,1:10, col = "white", xlab="",ylab="",xaxt="n",yaxt="n",bty="n",type='l') + text(5,8, labels = bquote("Certaines valeurs dépassent les limites défines en abscisse."), cex = cex.label*3/4, col = "red") + text(5,7, labels = bquote("Modifiez le choix de l'étendue au moyen du slider adéquat."), cex = cex.label*3/4, col = "red") + } + + ### CAS N°2.2 : Si pas d'erreur + if(error==0){ + + #Si la distribution est Binomiale & que l'option "afficher la densité normale" est cochée : + if (v$dist=="DBin"){ + if(v$showNdensity){ + par(mai=c(0.5,0.8,0.5,0.5), xaxs="i",yaxs="i") + hist(cv$samples.p.mat, probability=TRUE,yaxt="n",bty="n",xaxs="i",yaxs="i",xlab="",ylab=HTML("Densité"), xlim=c(lim.inf,lim.sup),xaxp=c(lim.inf,lim.sup,nbgrad), col = 'grey',main = "", breaks = 50, cex.lab = cex.label) #, ylim=c(0,cv$maxfreqcl*1.1) + axis(2,las=2,cex.axis=cex.axis) + mtext(bquote(paste("Distribution de la proportion de succès")), side=3,line=1, adj=0.5, cex=cex.label) + if(cv$n.samples>1){ + lim_dens_inf <- min (cv$samples.p.mat)-0.1 + lim_dens_sup <- max(cv$samples.p.mat)+0.1 + xfit<-seq(lim_dens_inf,lim_dens_sup,length=1000) + yfit<-dnorm(xfit,mean=mean(cv$samples.p.mat),sd=sd(cv$samples.p.mat)) + lines(xfit, yfit, col="blue", type = 'l',lwd=2) + mtext(bquote(paste(bar(X)%~~%N(p*","*p(1-p)/n),sep='')), side=3,line=-1,adj=0.05, cex=cex.label) + mtext(bquote(paste(bar(X)%~~%N(.(cv$samples.p.m.m)*","*.(cv$samples.p.v.m)),sep='')), side=3,line=-3,adj=0.05, cex=cex.label) + } + } + + #Si la distribution est Binomiale mais que l'option "afficher la densité normale" n'est pas cochée : + else { + par(mai=c(0.5,0.8,0.5,0.5), xaxs="i",yaxs="i") + hist(cv$samples.x.mat/v$n, freq=TRUE,yaxt="n",bty="n",xaxs="i",yaxs="i",xlab="",ylab=HTML("Fréquences"), xlim=c(lim.inf,lim.sup), ylim=c(0,cv$maxfreqcl*1.1),xaxp=c(lim.inf,lim.sup,nbgrad), col = 'grey',main = "", breaks = 50, cex.lab = cex.label) + axis(2,las=2,cex.axis=cex.axis) + mtext(bquote(paste("Distribution de la proportion de succès")), side=3,line=1, adj=0.5, cex=cex.label) + } + } + + #Pour toutes les autres distributions quand l'option "afficher la densité normale sur l'histogramme des moyennes" est cochée: + else{ + if(v$showMdensity){ + par(mai=c(0.5,0.8,0.5,0.5), xaxs="i",yaxs="i") + hist(cv$samples.x.m.vec, probability=TRUE,yaxt="n",bty="n", xaxs="i",yaxs="i",xlab="", ylab=HTML("Densité"),xlim=c(lim.inf,lim.sup),xaxp=c(lim.inf,lim.sup,nbgrad),col = 'grey',main = "",breaks=breaks, cex.lab=cex.label) + axis(2,las=2,cex.axis=cex.axis) + mtext(bquote(paste("Histogramme des moyennes d'échantillonnage")), side=3,line=1,adj=0.5, cex=cex.label) + if(cv$n.samples>1){ + mtext(bquote(paste(bar(X)%~~%N(E(bar(X))*","*V(bar(X))),sep='')), side=3,line=-1,adj=0.05, cex=cex.label) + mtext(bquote(paste(bar(X)%~~%N(.(cv$samples.x.m.m )*","*.(cv$samples.x.v.m )),sep='')), side=3,line=-3,adj=0.05, cex=cex.label) + lim_inf <- min (cv$samples.x.m.vec)-1 + lim_sup <- max(cv$samples.x.m.vec)+1 + xfit<-seq(lim_inf,lim_sup,length=1000) + yfit<-dnorm(xfit,mean=mean(cv$samples.x.m.vec),sd=sd(cv$samples.x.m.vec)) + lines(xfit, yfit, col="blue", type = 'l',lwd=2) + } + } + #Pour toutes les autres distributions quand l'option "afficher la densité normale sur l'histogramme des moyennes" n'est pas cochée: + else{ + par(mai=c(0.5,0.8,0.5,0.5), xaxs="i",yaxs="i") + h<-hist(cv$samples.x.m.vec, freq = TRUE, yaxt="n",bty="n", xaxs="i",yaxs="i", xlab="", ylab=HTML("Fréquences"), xlim=c(lim.inf, lim.sup), xaxp=c(lim.inf,lim.sup,nbgrad), col='grey', main="", breaks=breaks, cex.lab = cex.label) + axis(2,las=2,cex.axis=cex.axis) + mtext(bquote(paste("Histogramme des moyennes d'échantillonnage")), side=3,line=1,adj=0.5, cex=cex.label) + } + + } + }} + + + },height = getPlotHeight, width=getPlotWidth) + + + +})