x <- rexp(1000) # paramètre 1 par défaut mean(x) sd(x) quantile(x,c(0.25,0.5,0.75))
{hist(x, xlim=c(0,6), # fixer pour plusieurs graphiques col="blue", # la couleur freq=F, # fréquences plutôt que effectifs main="loi exponentielle",# titre du graphique ylab="")} # pas d'étiquette en ordonnée d <- density(x) # estimation de densité par(new=T) # pour superposer les graphiques {plot(d,col="green",xlim=c(0,6), axes=F,main="",xlab="",ylab="")} curve(exp(-x),col="red",add=T) # ajoute la vraie densité
f <- ecdf(x) # fonction de répartition plot(f,main="fonction de répartition",col="blue") curve(1-exp(-x),col="red",add=T)
i <- floor(x) # parties entières t <- table(i) # valeurs et effectifs val <- as.numeric(row.names(t))# valeurs fr <- as.vector(t) # effectifs fr <- fr/sum(fr) # fréquences pr <- dgeom(val, 1-exp(-1)) # probabilités fp <- rbind(fr,pr) # matrice frequences-probabilites # diagramme en barres double barplot(fp,beside=T,col=c("blue","red"))
ks.test(x,"pexp",1) # appliquer le test ks.test(x,"pexp",1)$p.value # extraire la p-valeur
ech <- 1000 # nombre d'échantillons n <- 20 # taille d'échantillon lambda <- 2 # valeur du paramètre X <- rexp(ech*n,rate=lambda) # tirages aléatoires X <- matrix(X,ech,n) # redimensionner T <- 1/rowMeans(X) # inverse des moyennes Tp <- T*(n-1)/n # estimations débiaisées dT <- density(T) # estimation de densité dTp <- density(Tp) rep <- lambda*c(0.5,2) # intervalle de représentation {plot(dT,col="blue",xlim=rep, main="estimateurs de lambda",xlab="")} lines(dTp,col="green",xlim=rep) abline(v=lambda,col="red") # vraie valeur
ic.moy <- function(X,nc=0.95){ # retourne l'intervalle de confiance pour lambda # basé sur la fonction t.test # ic <- t.test(X,conf.level=nc) # appel de la fonction ic <- ic$conf.int # extraire l'intervalle ic <- as.vector(ic) # conserver les deux bornes ic <- 1/ic # inverser les deux bornes ic <- sort(ic) # remettre dans l'ordre return(ic) # retourner l'intervalle }
ic.sym <- function(X,nc=0.95){ # retourne l'intervalle de confiance pour lambda # basé sur la loi gamma # a2 <- (1-nc)/2 # probabilité des ailes n <- length(X) # taille d'échantillon T <- 1/mean(X) # estimation q1 <- qgamma(a2,shape=n) # quantile inférieur q2 <- qgamma(1-a2,shape=n) # quantile supérieur ic <- c(q1,q2) # intervalle de quantiles ic <- ic*T/n # intervalle de confiance return(ic) # retourner l'intervalle }
test.gamma <- function(X,la0){ # retourne deux p-valeurs pour le test # de lambda=la0 contre lambda>la0 # p1 <- {t.test(X, # test de la moyenne alternative="less", # contre moyenne inférieure mu=1/la0)$p.value} # extraire la p-valeur T <- 1/mean(X) # estimation S <- n*la0/T # statistique de test p2 <- pgamma(S,shape=n) # loi sous l'hypothèse nulle return(c(p1,p2)) # retourner les deux valeurs }
ech <- 1000 # nombre d'échantillons n <- 20 # taille d'échantillon lambda <- 2 # valeur du paramètre X <- rexp(ech*n,rate=lambda) # tirages aléatoires X <- matrix(X,ech,n) # redimensionner T <- 1/rowMeans(X) # inverse des moyennes Tp <- T*(n-1)/n # estimations débiaisées T1 <- (rowMeans(X^2)/2)^(-1/2) # estimation par les carrés T2 <- log(2)/apply(X,1,median) # estimation par la médiane A <- cbind(T,Tp,T1,T2) # faire un tableau {boxplot(data.frame(A),names= # représenter les boxplots c("T","Tp","T1","T2"))} abline(h=lambda,col="red") # vraie valeur
lambda <- 2 # paramètre n <- 1000 # taille des échantillons x <- rexp(n,rate=lambda) # échantillon exponentiel x <- sort(x) # valeurs triées x <- x[-n] # supprimer la dernière F <- (1:(n-1))/n # ordonnées de la fonction y <- -log(1-F) # changement de variable plot(x,y, pch=".", col="blue") # couples de points reg<-lm(y~x) # régression linéaire abline(ref,col="red") # tracer la droite
reg.est <- function(X){ # retourne l'estimation de lambda par # régression non linéaire sur la fonction # de répartition empirique de X # n <- length(X) # taille d'échantillon x <- sort(X) # valeurs triées x <- x[-n] # supprimer la dernière F <- (1:(n-1))/n # ordonnées de la fonction y <- -log(1-F) # changement de variable reg <- lm(y~x) # regression linéaire return(reg$coefficients[2]) # retourner la pente }
compare.est <- function(lambda,E,n){ # retourne l'erreur quadratique moyenne de # 5 estimateurs de lambda, calculée sur # E échantillons de taille n # X <- rexp(E*n,rate=lambda) # tirages aléatoires X <- matrix(X,E,n) # redimensionner T <- 1/rowMeans(X) # inverse des moyennes Tp <- T*(n-1)/n # estimations débiaisées T1 <- (rowMeans(X^2)/2)^(-1/2) # estimation par les carrés T2 <- log(2)/apply(X,1,median) # estimation par la médiane Tr <- rep(0,E) # estimation par régression for (i in 1:E){ # pour chaque échantillon x <- X[i,] # extraire l'échantillon Tr[i]<-reg.est(x) # estimation } # fin de boucle A <- rbind(T,Tp,T1,T2,Tr) # faire un tableau A <- (A-lambda)^2 # carrés des erreurs q <- sqrt(rowMeans(A)) # erreurs quadratiques return(q) # retourner les erreurs } > compare.reg(2,1000,100) T Tp T1 T2 Tr 0.2068059 0.2029628 0.2286295 0.3020214 0.2821136
n <- 1000 # taille des échantillons X <- rexp(n); Y <- rexp(n) # échantillons ind <- which(Y>((1-X)^2)/2) # indices à conserver U <- X[ind] # valeurs conservées hist(U^2,breaks=20,freq=F) # histogramme {curve(dchisq(x,1),col="red", # densité de la loi du chi-deux add=T)}
m <- length(U) # longueur du nouvel échantillon S <- 2*rbinom(m,1,0.5)-1 # signes aléatoires Z <- U*S # nouvelles valeurs f <- ecdf(Z) # fonction de répartition plot(f,col="blue",main="loi normale") curve(pnorm(x),col="red",add=T)
qqnorm(Z) ks.test(Z,"pnorm") shapiro.test(Z)
n <- 1000 # taille des échantillons X<-rexp(n) Y<-rexp(n) Z<-rexp(n) S <- X/(X+Y+Z) T <- (X+Y)/(X+Y+Z) plot(S,T, pch=".", col="blue") # couples de points ks.test(S,"pbeta",1,2) ks.test(T,"pbeta",2,1)
n <- 1000; # taille des échantillons X<-runif(2*n,0,1) # tirages X <- matrix(X,2,n) # 2 lignes, n colonnes X <- apply(X,2,sort) # trier chaque colonne Sp <- X[1,] # première ligne Tp <- X[2,] # seconde ligne ks.test(S,Sp) ks.test(T,Tp) wilcox.test(S,Sp) wilcox.test(T,Tp)
lambda <- 0.5 # paramètre n <- 1000 # taille des échantillons T <- rexp(n,rate=lambda) # échantillon exponentiel p <- exp(-T) # paramètres Y <- rgeom(n,p) # échantillon de géométriques boxplot(Y) # des valeurs trop extrêmes quantile(Y,seq(0.1,0.9,by=0.1))# déciles max(Y) # maximum
tr <- 10 # valeur de troncature Y[which(Y>tr)] <- tr # troncature pr <- lambda*beta((1+lambda)*rep(1,tr),1:tr) pr <- append(pr,1-sum(pr)) # probabilités théoriques t <- table(Y) # effectifs observés chisq.test(t,p=pr) # test du chi-deux