varias superponer studio normal lineas histogramas histograma hacer graficos grafico graficas dispersion curva con como r histogram

superponer - Fuerza R para trazar el histograma como probabilidad(frecuencia relativa)



superponer graficas en r (5)

Tengo problemas para trazar un histograma como un pdf (probabilidad)

Quiero que la suma de todas las piezas sea igual a un área de uno para que sea más fácil de comparar entre conjuntos de datos. Por alguna razón, cada vez que especifico los saltos (el valor predeterminado de 4 o lo que sea terrible), ya no quiere trazar los intervalos como una probabilidad y en su lugar traza los intervalos como un conteo de frecuencia.

hist(data[,1], freq = FALSE, xlim = c(-1,1), breaks = 800)

¿A qué debo cambiar esta línea? Necesito una distribución de probabilidad y un gran número de contenedores. (Tengo 6 millones de puntos de datos)

Esto está en la ayuda de R, pero no sé cómo anularlo:

Frecuencia lógica si es VERDADERO, el gráfico del histograma es una representación de frecuencias, el componente cuenta del resultado; si FALSO, las densidades de probabilidad, la densidad de componentes, se trazan (de modo que el histograma tenga un área total de uno). El valor predeterminado es VERDADERO si y solo si las rupturas son equidistantes (y la probabilidad no está especificada).

Gracias

editar detalles

hmm así que mi trama va por encima de 1, lo cual es bastante confuso si es una probabilidad. Veo cómo tiene que ver con el ancho del contenedor ahora. Más o menos quiero hacer que cada papelera valga 1 punto mientras sigo teniendo muchos contenedores. En otras palabras, ninguna altura de contenedor debe estar por encima de 1.0 a menos que esté directamente en 1.0 y todos los otros contenedores sean 0.0. Tal como está ahora, tengo unos contenedores que hacen una joroba alrededor de 15.0

edit: altura por% puntos en bin @Dwin: Entonces, ¿cómo trazo la probabilidad? Me doy cuenta de que tomar la integral todavía me dará 1.0 debido a las unidades en el eje x, pero esto no es lo que quiero. Digamos que tengo 100 puntos y 5 de ellos caen en el primer contenedor, luego ese contenedor debería estar a una altura de .05. Esto es lo que quiero. ¿Lo estoy haciendo mal y hay otra manera de hacerlo?

Sé cuántos puntos tengo. ¿Hay una manera de dividir cada recuento de intervalos en el histograma de frecuencias por este número?


¿Estás seguro? Esto es trabajo para mí:

> vec <- rnorm(6000000) > > h <- hist(vec, breaks = 800, freq = FALSE) > sum(h$density) [1] 100 > unique(zapsmall(diff(h$breaks))) [1] 0.01

Multiplique los dos últimos resultados y obtendrá una densidad de probabilidad de 1. Recuerde que el ancho de la bandeja es importante aquí.

Esto es con

> sessionInfo() R version 3.0.1 RC (2013-05-11 r62732) Platform: x86_64-unknown-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8 [5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8 [7] LC_PAPER=C LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base loaded via a namespace (and not attached): [1] tools_3.0.1


El número predeterminado de interrupciones es alrededor de log2(N) donde N es de 6 millones en su caso, por lo que debería ser 22. Si solo está viendo 4 interrupciones, podría deberse a que tiene xlim en su llamada. Esto no cambia el histograma subyacente, solo afecta a qué parte se traza. Si lo haces

h <- hist(data[,1], freq=FALSE, breaks=800) sum(h$density * diff(h$breaks))

debe obtener un resultado de 1.

La densidad de sus datos está relacionada con sus unidades de medida; por lo tanto, debe asegurarse de que "la altura de ningún contenedor no debe estar por encima de 1.0" es realmente significativa. Por ejemplo, supongamos que tenemos un montón de medidas en pies. Se grafica el histograma de las medidas como una densidad. Luego convertimos todas las medidas a pulgadas (multiplicando por 12) y hacemos otro histograma de densidad. La altura de la densidad será 1/12 del original aunque los datos sean esencialmente los mismos. De manera similar, puede hacer que sus alturas de contenedor sean todas menos de 1 al multiplicar todos sus números por 15.

¿El valor 1.0 tiene algún tipo de significado?


Observé que, en la densidad del histograma = frecuencia relativa / ancho correspondiente del contenedor

Ejemplo 1:

nums = c (10, 41, 10, 28, 22, 8, 31, 3, 9, 9)

h2 = hist (números, gráfico = F)

rf2 = h2 $ cuentas / suma (h2 $ cuentas)

d2 = rf2 / diff (h2 $ breaks)

densidad de $ h2

[1] 0.06 0.00 0.02 0.01 0.01

d2

[1] 0.06 0.00 0.02 0.01 0.01

Ejemplo 2:

nums = c (10, 41, 10, 28, 22, 8, 31, 3, 9, 9)

h3 = hist (números, gráfico = F, saltos = c (1,30,40,50))

rf3 = h3 $ cuentas / suma (h3 $ cuentas)

d3 = rf3 / diff (h3 $ breaks)

densidad de $ h3

[1] 0.02758621 0.01000000 0.01000000

d3

[1] 0.02758621 0.01000000 0.01000000


Para responder a la solicitud de trazar probabilidades en lugar de densidades:

h <- hist(vec, breaks = 100, plot=FALSE) h$counts=h$counts/sum(h$counts) plot(h)


R tiene un error o algo así. Si tiene datos discretos en un data.frame (con 1 columna), e hist de llamadas (DF, freq = FALSE), las densidades relativas serán incorrectas (sumando a> 1). Esto no debería ocurrir por lo que puedo decir.

La solución es llamar primero a unlist () en el objeto. Esto arregla la trama. (También cambié el texto, datos de http://www.electionstudies.org/studypages/anes_timeseries_2012/anes_timeseries_2012.htm )