R:测试变量是否包含相同的信息

时间:2016-08-22 01:59:27

标签: r

假设我在包含相同信息的数据集中有两个变量,例如“男性”和“女性”(假设只有2个性别且没有丢失数据)。如何测试两列是否包含相同的信息,从而允许我删除其中一列?

我考虑过检查包含它们的矩阵的等级,但显然这样的矩阵是满秩,即使列明显相互依赖。

编辑:我指的是两个变量,如下所示:

M F
1 0
1 0
0 1
0 1
1 0

显然,这两个变量中包含相同的信息。我该如何测试?

2 个答案:

答案 0 :(得分:0)

<强>被修改

根据您的说明,您可以使用成对相关来检测数据列之间的正相关和负相关,例如:

# create example data matrix matrix; add a fourth column that is inverse
# of the third one
> set.seed(1)
> x <- matrix(sample(0:1, 15, replace=TRUE), ncol=3)
> x <- cbind(x, ifelse(x[,3] == 0, 1, 0))
> x
     [,1] [,2] [,3] [,4]
[1,]    0    1    0    1
[2,]    0    1    0    1
[3,]    1    1    1    0
[4,]    1    1    0    1
[5,]    0    0    1    0

接下来,构建相关矩阵。对角线设置为零,因为忽略自相关。

然后,我们测试每一列,看看它与其他列的相关性的最大绝对值是否等于1,这表明这些列包含相同的信息。

> cormat <- cor(x)
> diag(cormat) <- 0
> apply(cormat, 2, function(x) { max(abs(x)) == 1 })
[1] FALSE FALSE  TRUE  TRUE

答案 1 :(得分:-1)

也许是这样的?

x = rep(c("Male"), each = 10)
y = rep(c("Female"),each = 10)
fm = matrix(data = c(x,y), ncol = 2)

fm[,1] == fm[,2]