He buscado en Google y en StackOverflow para encontrar una solución a mi problema. He intentado algunas cosas ahora y parece que nada funciona.

Estoy tratando de crear un diagrama de caja de correlación de características lingüísticas. Para cada función (36 en total), hay un 1 en Excel para cuando un orador la usó y un 0 para cuando un orador no lo hizo.

Hay 41 hablantes, ninguno de los cuales utilizó las 36 funciones, aunque la puntuación más baja es 8. Quiero analizar mis datos para ver qué funciones se correlacionan y, por lo tanto, averiguar qué funciones predicen el uso de otras funciones.

He estado usando corrplot en R. Aquí está el comando que he estado usando:

cor_mat <- df_analysis %>%
    replace(., is.na(.), 0) %>%
    cor(method = "spearman")

cor_residuals <- cor.mtest(cor_mat, conf.level = .95)

Pero, aparece un error que dice:

Error in cor.test.default(x = mat[, i], y = mat[, j], ...) : not enough finite observations

¿Alguien sabe por qué y cómo puedo rectificarlo? De hecho, todo lo que realmente necesito saber es cuál es el problema, y probablemente pueda resolverlo por mi cuenta a partir de ahí. ¡Aunque estaría muy agradecido si también tuvieras la solución!

¡Muchas gracias!

1
Teàrlach 15 ago. 2020 a las 18:18

2 respuestas

La mejor respuesta

Tiene varias columnas en su conjunto de datos que no tienen variación; por lo tanto, las correlaciones para estas variables son todas NA, lo que arruina las cosas en sentido descendente.

which(apply(df_analysis,2,sd)==0)
## [1] a' c[h]lach bheag [3] a' c[h]loich bhig [14] a' b[h]ord bheag 
##                     1                     3                    14 
##       [26] nan su[ ]l       [27] nan sul[ ] 
##                    26                    27 

Me di cuenta de esto configurando options(error=recover) y ejecutándolo para ver dónde ocurrió el error (esta configuración lo coloca en modo navegador / depuración cuando ocurre un error). Más directamente, debería haber hecho corrplot(cor_mat), lo que ayuda a poner signos de interrogación para los valores de NA ...

enter image description here

image(), o heatmap(as.matrix(df_analysis),Rowv=NA,Colv=NA, scale="none", margins=c(10,8)), sería bueno para ver sus datos sin procesar.

0
Ben Bolker 15 ago. 2020 a las 18:26

Puede definir corrplot idealmente así:

df_cor <- cor(df_analysis)
corrplot(df_cor, type = "full", order = "hclust",
         outline.color = "white", hc.method = "ward",
         pch.cex = .5, show.diag = TRUE,
         p.mat = cor_residuals$p, insig = "blank", sig.level = .01,
         addrect = 20, tl.srt = 36, tl.cex = .8, tl.col = "black",
         col = rev(lacroix_palette("PassionFruit", 8, "continuous")))
0
Jovan Geraldy Candra 15 ago. 2020 a las 17:44