Foro de debate

Superponer curva normal en un barplot

 
Imagen de Irene .
Superponer curva normal en un barplot
de Irene . - miércoles, 29 de noviembre de 2017, 22:49
 

Hola,

Tengo la siguiente distribución binomial:

> set.seed(625766839)

> dist<- rbinom(100,10,0.25)

 [1] 2 0 4 1 4 2 3 1 2 2 3 3 1 1 3 0 3 4 3 1 3 3 4 2 3 4 2 2 3 5 4 1 2 3 3 2 3 4 1 2

[41] 5 2 2 7 2 2 2 7 5 1 0 2 1 3 0 1 4 1 1 4 3 3 3 3 2 3 2 2 2 2 4 2 1 4 4 0 5 2 4 3

[81] 1 1 6 3 1 0 3 2 1 1 4 2 5 1 2 1 1 3 4 3


Necesitaría dibujar un histograma con los valores generados para dist, y superponer la

la curva normal que se esperaría según el teorema central del límite.El problema es que al tratarse de variables categóricas, lo que en realidad tendría que dibujar es un barplot y sobre el superponer la curva normal, que al tener diferente escala en el eje y, me queda muy pequeña, como se ve en la siguiente imagen:

Barplot con curva normal

Lo que necesitaría es superponer la curva normal


 graf2<- curve(dnorm(x,2.5,1.37),-1,7)

en el barplot de la figura de arriba, de forma que me quedara algo similar a esto:


Histogram and density curve


Gracias!!!

Imagen de Manuel Muñoz Márquez
Re: Superponer curva normal en un barplot
de Manuel Muñoz Márquez - jueves, 30 de noviembre de 2017, 09:59
 

Buenas:

Puedes hacer un diagrama de barras con frecuencias relativas, o bien multiplicar la curva por el número de observaciones.

set.seed(625766839)
dist<- rbinom(100,10,0.25)
barplot(table(dist)/length(dist),ylim=c(0,0.5))
curve(dnorm(x,2.5,1.473675),-1,7, add=TRUE)

Barras y normal

Imagen de Alfredo Holley
Re: Superponer curva normal en un barplot
de Alfredo Holley - jueves, 30 de noviembre de 2017, 16:53
 

Va a ver si te sirve.

Saludos!

N = 100 #tamaño poblacional

try = 10

prb = 0.25

n_samp = 3 #tamaño muestral


dist_pop <- rbinom(N, try, prb)

std_error <- sd(dist_pop)/sqrt(n_samp)

x <- seq(min(dist_pop), max(dist_pop), length= 1000)

TCL_curve <- dnorm(x, mean= mean(dist_pop), sd= std_error)*N

barplot(table(dist_pop), ylim= c(0, 5+max(TCL_curve)))

points(x, TCL_curve, lwd= 2, "l", col= "black")