titles tag img images attribute and r plot

tag - Diferencia entre dos parcelas de densidad



meta alt tag (2)

¿Hay una manera simple de trazar la diferencia entre dos funciones de densidad de probabilidad?

Puedo trazar los pdfs de mis conjuntos de datos (ambos son vectores unidimensionales con aproximadamente 11000 valores) en la misma trama juntos para tener una idea de la superposición / diferencia, pero sería más útil para mí si pudiera ver una trama de la diferencia.

algo similar a lo siguiente (aunque esto obviamente no funciona):

> plot(density(data1)-density(data2))

Soy relativamente nuevo en R y no he podido encontrar lo que estoy buscando en ninguno de los foros.

Gracias por adelantado


Esto debería funcionar:

plot(x =density(data1, from= range(c(data1, data2))[1], to=range(c(data1, data2))[2] )$x, y= density(data1, from= range(c(data1, data2))[1], to=range(c(data1, data2))[2] )$y- density(data2, from= range(c(data1, data2))[1], to=range(c(data1, data2))[2] )$y )

El truco es asegurarse de que las densidades tengan los mismos límites. Luego puede trazar sus diferencias en las mismas ubicaciones. Mi comprensión de la necesidad de límites idénticos proviene de haber cometido el error de no dar ese paso al responder una pregunta similar en Rhelp hace varios años . Lástima que no pude recordar los argumentos correctos.


Parece que necesita pasar un poco de tiempo aprendiendo a usar R (o cualquier otro idioma, para el caso). Los archivos de ayuda son tus amigos. De la salida de ?density :

Valor [es decir, los datos devueltos por la función]

Si give.Rkern es verdadero, el número R (K), de lo contrario un objeto con clase "densidad" cuya estructura subyacente es una lista que contiene los siguientes componentes.

x las n coordenadas de los puntos donde se estima la densidad.

y los valores de densidad estimados. Estos serán no negativos, pero pueden ser cero [el resto del "valor" se eliminó por brevedad]

Entonces, hazlo

foo<- density(data1) bar<- density(data2) plot(foo$y-bar$y)