Foro de debate

Correlograma con valores significativo

Correlograma con valores significativo

de nacho dread -
Número de respuestas: 2
Estimados, les agradecería me ayuden con esto:

Genere un gráfico de dispersión con el código:

plot(p2$mean.of.class[1:40],p2$correlation[1:40], type="o", 
     pch=16,ylab="I Moran",xlab="Distancia (m)")

donde p2 es un dato tipo "correlog" del paquete "ncf"

> str(p2)
List of 6
 $ n            : Named int [1:1239] 28 49 130 214 186 262 240 208 208 240 ...
  ..- attr(*, "names")= chr [1:1239] "0" "1" "2" "3" ...
 $ mean.of.class: Named num [1:1239] 0 988 1548 2463 3489 ...
  ..- attr(*, "names")= chr [1:1239] "0" "1" "2" "3" ...
 $ correlation  : Named num [1:1239] 0.323 0.45 0.476 0.452 0.283 ...
  ..- attr(*, "names")= chr [1:1239] "0" "1" "2" "3" ...
 $ x.intercept  : Named num 24321
  ..- attr(*, "names")= chr "(Intercept)"
 $ p            : num [1:1239] 0.032967 0.003996 0.000999 0.000999 0.000999 ...
 $ call         : chr "correlog(x = p1$X, y = p1$Y, z = rntransform(p1$Tgen), increment = 1000)"
 - attr(*, "class")= chr "correlog"

Necesito que ademas en el gráfico se rellenen en rojo los puntos que son significativos p<0.05 . Estos valores p estan en la columna p2$p

Gracias!




En respuesta a nacho dread

Re: Correlograma con valores significativo

de Manuel Muñoz Márquez -
Como no has puesto un ejemplo reproducible empiezo construyendo mis propios datos:
p2 <- list(mean.of.class = 1:10, correlation = seq(-.5,.5,.1), p = seq(0,1,.1)) 

Ahora hacemos el plot:
plot(p2$mean.of.class[1:40], p2$correlation[1:40], type="o", pch=16, ylab="I Moran", xlab="Distancia (m)")

A continuación se construye un vector de índices para seleccionar, por ejemplo, los valores de p inferiores a .3
index <- p2$p < .3

Y por último se pintan de rojo sobre la gráfica ya construida
points(p2$mean.of.class[index], p2$correlation[index], type="p", pch=16, col = 'red')


Otra alternativa sería utilizar un vector de colores en el plot que se adaptase para cada punto al color deseado.

Saludos.