Выполните тест KMO с некоторыми нулевыми целыми числами в R

#r #dataframe #statistics

Вопрос:

Я хочу выполнить факторный анализ с фреймом данных, содержащим несколько целых нулевых чисел. А head(df[1:10,1:20]) показано ниже:

  library(corrplot)
 library(psych)
 library("psych")
 library(ggplot2)
 library(car)

 df <- read.csv('salvia.csv', header = TRUE, sep = ',')

 head(df[1:5,1:5])

Output:

able about actually again almost
1    2     2        0     8      
2    0     2        2     2      
3    0     1        0     0      
4    2     5        5     3      
5    0     3        0     2      
 

Как вы видите, есть некоторые нулевые значения, но они важны для моего исследования. Когда я применяю функцию KMO, вывод выглядит следующим образом (просто фрагмент):

 KMO(df)

Output:
able about actually again almost 
NA    NA     NA        NA     NA     

Warning message:
In cov2cor(Q) : diag(.) had 0 or NA entries; non-finite result is doubtful
 

Я пытался использовать

 df[1:256] <- lapply(df[1:256], as.numeric)
 

но поскольку это уже числовой класс, это никак не повлияло на результат. Пожалуйста, как я могу сохранить нули для тестов? Я ввел этот же фрейм данных в SPSS, и он отлично работал, но я хочу выполнить весь свой анализ в R.

Комментарии:

1. Не могли бы вы предоставить полный df кадр данных ? Основываясь на предупреждающем сообщении KMO() , кажется, что в нем отсутствуют значения. Возможно, вам сначала потребуется удалить эти отсутствующие значения. as.numeric не удалит пропущенные значения.

2. Тип help(KOM) . Для аргумента r требуется «матрица корреляции или матрица данных (будут найдены корреляции)».

3. @Харрисон Джонс, привет. Я использовал complete.cases() функцию, и она вернула значение FALSE для значений na. Когда я пытаюсь sum(is.na(df)) , он возвращает 413. Но когда я пытаюсь na.omit(df) , проблема остается той же самой. Боюсь, я не могу предоставить здесь полный кадр данных, так как он огромен.

4. @Харрисон Джонс, как вы можете видеть в выходных данных, все значения возвращаются как NA. Но они есть. Действительно странно.

5. @HarrisonJones, когда я применил dput() , вывод вернул странную последнюю переменную X, полную NAs. Любопытно, что я не нашел эту переменную в исходном csv-файле. В любом случае, я удалил его в своем коде, и KMO сработал! Большое вам спасибо за вашу помощь!