我有一个二进制/因子变量的变量列表(10)。例如,有特定副作用的人和没有的人。我想找出这些变量之间的相关性。一个变量与另一个变量是否相关。我不能使用R中的cor函数,因为它只处理连续/定量数据。所以我用的是四声函数
correlation_data <- Toxicity %>% dplyr::select('variable1', 'variable2', 'variable3', 'variable4', etc....) %>% na.omit()
correlation_data [] <- lapply(correlation_data, factor)
install.packages("psych")
library(psych)
tetrachoric(correlation_data)
然而,我得到一个错误说:
Error in t(x) - mx : non-numeric argument to binary operator
我不确定这是什么意思?如何克服这个错误?
数据必须是数字(在本例中是二进制)。您可以看到,如果数据是数字,它可以工作,但如果它们是因子,它就不能:
library(dplyr)
library(psych)
bins <- matrix(rbinom(250, 1, .25), ncol=10)
bins <- as.data.frame(bins)
tetrachoric(bins)
#> Warning in cor.smooth(mat): Matrix was not positive definite, smoothing was done
#> Call: tetrachoric(x = bins)
#> tetrachoric correlation
#> V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#> V1 1.00
#> V2 0.47 1.00
#> V3 -0.18 0.02 1.00
#> V4 -0.17 0.03 0.65 1.00
#> V5 0.11 -0.10 -0.26 -0.26 1.00
#> V6 0.38 0.45 -0.06 -0.36 -0.18 1.00
#> V7 -0.06 -0.28 -0.06 -0.08 -0.16 0.28 1.00
#> V8 -0.33 -0.19 0.02 0.03 -0.10 0.14 0.41 1.00
#> V9 -0.25 -0.65 -0.26 -0.22 0.32 -0.47 0.51 -0.10 1.00
#> V10 -0.26 -0.10 0.11 0.11 0.00 0.23 0.24 0.33 -0.01 1.00
#>
#> with tau of
#> V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
#> 0.99 0.71 0.99 0.99 0.84 0.58 0.58 0.71 0.25 0.84
bins <- bins %>%
mutate(across(everything(), as.factor))
tetrachoric(bins)
#> Error in t(x) - mx: non-numeric argument to binary operator
在2022-05-10由reprex包(v2.0.1)创建