我有两个专栏,A& B,在一个名为X的数据框中.A有38个级别,B有3个。
如何检查A 38级别和B级别3级别之间的相关性?感谢。
答案 0 :(得分:2)
如果订购A和B,那么我们可以计算他们的等级相关性(即他们的等级的相关性):
dd <- data.frame(A = c("a", "a", "b", "b", "c", "c"),
B = c("x", "x", "x", "y", "y", "y")) # test data
with(dd, cor(rank(A), rank(B)))
## [1] 0.8164966
如果没有,那么我们可以计算每对水平之间的相关性:
mA <- model.matrix(~ A - 1, dd)
mB <- model.matrix(~ B - 1, dd)
cor(mA, mB)
## Bx By
## Aa 0.7071068 -0.7071068
## Ab 0.0000000 0.0000000
## Ac -0.7071068 0.7071068
在后一种情况下,如果我们想要一个数字,我们可以看一下规范相关性,这是两组变量的线性函数之间的最高相关性。 (我们也可以忽略排序,然后将其应用于第一种情况。)
cancor(mA, mB)$cor
## [1] 0.8164966
答案 1 :(得分:1)
术语&#34;相关性&#34;用于字符数字的变量。如果您正在检查两个分类变量的联合关系(使用因子级别,那么您可以使用table
查看交叉列表:
AB.tbl <- with(X, table, A,B))
AB.tbl
要查看这是否合理地是非随机关联,您可以使用chisq.test
来进行关联的整体测试:
chisq.test(AB.tbl)