Может случиться так, что функция плохо обрабатывает факторы, когда в качестве аргумента вводится информационный кадр (возможно, если вы переключили их все на числовые). Однако в качестве аргумента используется матрица, так что это сработало для созданного мной набора данных. В будущем всегда полезно включить воспроизводимый пример. Надеюсь это поможет!
Изменить: уточнить. Я думаю, проблема в том, что ваш набор данных состоял из факторов. Функция не работает, когда переменные являются факторами. Это будет работать, если переменные являются числовыми или если введенные данные представляют собой матрицу. Таким образом, независимо от того, что вы решите преобразовать столбцы данных в числовые или данные в матрицу, сработает (то есть строка df_matrix <- data.matrix(df)
из моего кода преобразовала данные в матрицу). Дайте знать, если у вас появятся вопросы.
> # Creating your dataset
>
> library(tidyverse)
> library(psych)
>
> df <- data.frame(CMS_1 = sample(2, replace = T, size = 10)-1,
+ CMS_2 = sample(2, replace = T, size = 10)-1,
+ CMS_3 = sample(2, replace = T, size = 10)-1,
+ CMS_4 = sample(2, replace = T, size = 10)-1,
+ CMS_5 = sample(2, replace = T, size = 10)-1,
+ CMS_6 = sample(2, replace = T, size = 10)-1,
+ CMS_7 = sample(2, replace = T, size = 10)-1,
+ CMS_8 = sample(2, replace = T, size = 10)-1)
>
> df <- df %>% mutate_if(is.numeric, as.factor)
> str(df)
'data.frame': 10 obs. of 8 variables:
$ CMS_1: Factor w/ 2 levels "0","1": 1 2 1 2 2 2 1 2 2 2
$ CMS_2: Factor w/ 2 levels "0","1": 1 2 2 1 2 2 1 2 1 2
$ CMS_3: Factor w/ 2 levels "0","1": 1 1 2 2 1 1 1 1 1 1
$ CMS_4: Factor w/ 2 levels "0","1": 2 2 1 2 1 1 2 1 1 2
$ CMS_5: Factor w/ 2 levels "0","1": 2 1 1 2 2 2 1 2 1 2
$ CMS_6: Factor w/ 2 levels "0","1": 2 2 1 1 2 2 2 2 1 2
$ CMS_7: Factor w/ 2 levels "0","1": 2 1 2 1 1 2 1 1 1 2
$ CMS_8: Factor w/ 2 levels "0","1": 1 2 2 1 1 2 1 1 1 1
>
> # Covnerting your data.frame to a matrix
> df_matrix <- data.matrix(df)
>
>
> tetrachoric(df_matrix)
For i = 6 j = 3 A cell entry of 0 was replaced with correct = 0.5. Check your data!
For i = 8 j = 2 A cell entry of 0 was replaced with correct = 0.5. Check your data!
Call: tetrachoric(x = df_matrix)
tetrachoric correlation
CMS_1 CMS_2 CMS_3 CMS_4 CMS_5 CMS_6 CMS_7 CMS_8
CMS_1 1.00
CMS_2 0.47 1.00
CMS_3 -0.31 -0.21 1.00
CMS_4 -0.37 -0.54 -0.02 1.00
CMS_5 0.43 0.27 -0.22 0.02 1.00
CMS_6 0.14 0.45 -0.74 0.29 0.44 1.00
CMS_7 -0.44 0.34 0.22 -0.02 0.29 0.20 1.00
CMS_8 -0.13 0.58 0.33 -0.33 -0.44 -0.10 0.46 1.00
with tau of
CMS_1 CMS_2 CMS_3 CMS_4 CMS_5 CMS_6 CMS_7 CMS_8
-0.52 -0.25 0.84 0.00 -0.25 -0.52 0.25 0.52
Warning message:
In cor.smooth(mat) : Matrix was not positive definite, smoothing was done