#Distribuciones en R # Normal dnorm(x, mean = 0, sd = 1, log = FALSE) Calcula el valor de f(x), es decir la densidad pnorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) dada una probalilidad calcula el percentil qnorm(p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) dado un valor de x calcula la probabilidad acumulada a izquierda. rnorm(n, mean = 0, sd = 1) genera pseudoaleatorios dnorm(0,0,1) 1/ sqrt(2*pi) qnorm(0.5,0,1) dada una probalilidad calcula el percentil pnorm(0,0,1) dado un valor de x calcula la probabilidad acumulada a izquierda. ?dt ?dchisq ?dunif x<-seq(-6,6,0.01) z<-dnorm(x,0,1)# densidad de una normal con media=0 y desvío=1 t<-dt(x,5) # densidad de una t de student con 5 grados de libertad u<-dunif(x,-2,2)# densidad de una uniforme en (-2,2) plot(x,z,type="l") lines(x,t,col=4) lines(x,u,col=3) ############################################################################# #Calculo de percentiles #A mano set.seed(25) y<-round(rnorm(11,2,0.5),3) sort(y) #1.129 1.250 1.423 1.479 1.777 1.894 1.971 2.050 2.161 2.256 2.867 #Mediana=1.894 #Cuartil1=1.423 #Cuartil3=2.161 #Calculo con las distintas formas que tiene R los percentiles ?quantile p <- c(25,50,75)/100 res <- matrix(as.numeric(NA), 9, 3) for(type in 1:9) res[type, ] <- y <- quantile(y, p, type=type) dimnames(res) <- list(1:9, names(y)) round(res, 3) #Los ppoints solo dependen de la longitud del vector, no de la distribución. x1=rexp(20,5) x2=runif(20,2,4) x3=rnorm(20,2,0.5) ppoints(x1) ppoints(x2) ppoints(x3) ?ppoints ###¿Como hace el càlculo? #Si n<10 a=3/8 le resto 3/8 y en el denominador le sumo 0.25 #Si n>=10 a=0.5 le resto 0.5, pero en el denominador no le sumo nada. #(1:m - a)/(m + (1-a)-a) donde m es la longitud #Dos maneras distintas de hacer un qqnorm set.seed(23) x<-rnorm(30) par(mfrow=c(2,1)) qqnorm(x) qnorm(ppoints(x)) xs<-sort(x) plot(qnorm(ppoints(x)),xs) ########################################################################### #Ejemplos #Distribución Normal con media=0 y desvío=1 p=seq(0,1,0.01) zvar=qnorm(p,0,1) x<-seq(-6,6,0.01) z<-dnorm(x,0,1) par(mfrow=c(2,2)) plot(x,z,type="l") zvar=zvar[2:100] hist(zvar,main="Histograma") boxplot(zvar) title("Boxplot") qqnorm(zvar,main = "Gráfico cuantil cuantil") qqline(zvar, col = 2) #Distribución T de Student con 5 grados de libertad p=seq(0,1,0.01) tvar=qt(p,5) x<-seq(-6,6,0.01)vío=1 t<-dt(x,5) # densidad de una t de student con 5 grados de libertad par(mfrow=c(2,2)) plot(x,t,type="l") tvar=tvar[2:100] hist(tvar) boxplot(tvar) qqnorm(tvar) #Comparo con una distribución normal y una T de Student par(mfrow=c(2,1)) qqnorm(tvar) plot(qt(ppoints(tvar),5),sort(tvar)) #Distribución chi-cuadrado con 5 grados de libertad xchi=seq(0,30,0.01) zchi=dchisq(xchi,5) p=seq(0,1,0.01) chivar=qchisq(p,5) par(mfrow=c(2,2)) plot(xchi,zchi,type="l") chivar=chivar[2:100] hist(chivar) boxplot(chivar) qqnorm(chivar) #Comparo con una distribución normal y una Chi-cuadrado par(mfrow=c(2,1)) qqnorm(chivar) plot(qchisq(ppoints(chivar),5),sort(chivar)) #Distribución Uniforme en (-2,2) xu=seq(-6,6,0.01) u=dunif(xu,-2,2) plot(xu,u,type="l") p=seq(0,1,0.01) uvar=qunif(p,0,1) par(mfrow=c(2,2)) plot(xu,u,type="l") uvar=uvar[2:100] hist(uvar) boxplot(uvar) qqnorm(uvar) #Comparo con una distribución normal y una uniforme par(mfrow=c(2,1)) qqnorm(uvar) plot(qunif(ppoints(uvar),-2,2),sort(uvar)) # Para comparar dos conjuntos de datos #Ejemplo:OZONO oz<-read.table(file.choose(),header=T) plot(sort(oz$CONTROL),sort(oz$OZONO)) #Parecería que Ozono tiene cola "un poco más pesada a derecha que control boxplot(oz)