#Función con ciclos outli.sim=function(n,m) #n=numero de simulaciones #m=tamaño de la muestra { corte<-0 out1<-0 out2<-0 for(i in 1:n) {x<-rnorm(m) q<-quantile(x,probs=c(0.25,0.75),na.rm=T) dq<-q[2]-q[1] sumout<-sum((x<(q[1]-1.5*dq))|(x>(q[2]+1.5*dq))) if(sumout==1) out1<-out1+1 if(sumout==2) out2<-out2+1 if(sumout==0) corte<-corte+1 } out1<-out1/n out2<-out2/n corte<-corte/n out<-c(out1,out2,corte) names(out)<-c("% de muestras con 1 outlier"," % de muestras con 2 outliers", "% de muestras sin outliers") out } outli.sim(1000,5) #Función sin ciclos outliers.frec2<-function(mat) { cuartos<-t(apply(mat,1,quantile,c(1/4,3/4))) # matriz de n filas y 2 columnas con q1 y q3 dist<-cuartos[,2]-cuartos[,1] # vector de n elementos con dist. entre cuartos out.chicosleves<-t(apply((matcuartos[,2]+1.5*dist),1,sum)) # cuenta outliers leves grandes out<-table(out.chicosleves+out.grandesleves)/dim(mat)[1]# frecuencia de cantidad de outliers names(out)<-c("% de muestras sin outlier"," % de muestras con 1 outliers", "% de muestras con 2 outliers") out } n<-1000 # Cantidad de muestras o filas m<-5 # Tamaño de cada muestra o cantidad de columnas mat<-matrix(rnorm(n*m),nrow=n) # matriz de n*m con datos N(0,1) outliers.frec2(mat)