R псих тетрахорические - дихотомические переменные - PullRequest
1 голос
/ 06 марта 2019

У меня есть набор данных дихотомических переменных, соответствующих пунктам анкеты личности. Вот первые строки.

  head(mixclinic)
  # A tibble: 6 x 15
    CMS_1 CMS_2 CMS_3 CMS_4 CMS_5 CMS_6 CMS_7 CMS_8 CMS_9 CMS_10 CMS_11
    <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct>  <fct> 
    1 1     1     0     1     0     1     0     0     0     0      0     
    2 1     1     0     1     0     0     0     1     0     0      0     
    3 1     1     0     1     0     1     0     0     0     0      0     
    4 0     1     0     1     0     1     0     1     0     0      0     
    5 0     1     0     1     0     1     0     0     0     0      0     
    6 1     1     0     1     1     1     0     0     0     0      0 

Я хотел бы выполнить тетрахорическую корреляцию, чтобы найти факторы, объясняющие большую часть изменчивости. В поисках ресурсов на основе R я наткнулся на пакет 'psych' с функцией tetrachoric. Я прочитал документацию, но, тем не менее, я не смог выполнить анализ. Там, кажется, не хватает учебника, чтобы помочь. Может ли кто-нибудь помочь или сослаться на полезные источники? Спасибо

1 Ответ

1 голос
/ 06 марта 2019

Может случиться так, что функция плохо обрабатывает факторы, когда в качестве аргумента вводится информационный кадр (возможно, если вы переключили их все на числовые). Однако в качестве аргумента используется матрица, так что это сработало для созданного мной набора данных. В будущем всегда полезно включить воспроизводимый пример. Надеюсь это поможет!

Изменить: уточнить. Я думаю, проблема в том, что ваш набор данных состоял из факторов. Функция не работает, когда переменные являются факторами. Это будет работать, если переменные являются числовыми или если введенные данные представляют собой матрицу. Таким образом, независимо от того, что вы решите преобразовать столбцы данных в числовые или данные в матрицу, сработает (то есть строка 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...