我有一个与人格问卷项目相对应的二分法变量的数据框架。这里是第一行。
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的资源时,我偶然发现了一个名为“function”的包,它的功能是tetrachoric。我阅读了文档,但尽管如此,我还是无法执行分析。似乎缺少教程来帮助解决问题。有没有人可以提供帮助或参考有用的资源?谢谢
发布于 2019-03-07 00:48:20
当输入数据帧作为参数时,函数可能不能很好地处理因子(可能是将它们全部切换为数字)。然而,它接受一个矩阵作为参数,所以这适用于我创建的数据集。将来,包含一个可重现的示例总是很有帮助的。希望这能有所帮助!
编辑:澄清。我认为问题在于您的数据集由多个因素组成。当变量是因子时,函数似乎不起作用。如果变量是数字或输入的数据是矩阵,它将起作用。因此,无论您选择将dataframe列转换为数字,还是将dataframe转换为矩阵,都是可行的(即,我的代码中的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 donehttps://stackoverflow.com/questions/55027778
复制相似问题