标准化是否应该完全消除相关性?

机器算法验证 r 正常化 电车 序列分析
2022-04-20 17:23:51

我有两个变量:排序和长度。前者衡量一个序列的顺序(即ABC的所有排列),前者是序列的长度(即ABC的长度为3)。这些是高度相关的,我想按长度标准化排序度量。我期待这种标准化能够完全消除相关性 - 但事实并非如此。怎么会这样?

id      order   length  order/length
X1      4           3   1.333333333
X33     2           1   2
X566    44          6   7.333333333
X681    4           2   2
X682    46          6   7.666666667
X80     2           1   2

correlation before normalization: 0.958
correlation AFTER normalization: 0.610

相关性已经降低,但变量仍然高度相关。我的野心是分出与“长度”分开的“顺序”部分,但我似乎没有在这里实现这一点。我怎样才能做到这一点?我的想法哪里出错了?

2个回答

诚然,这只是@whuber 评论的操作化(谢谢!),但我仍然觉得记录它很有帮助。

normalization <- function(order, length){
  data <- as.data.frame(cbind(order, length))
  model <- lm(order ~ length, data)
  order_normalized <- order-(model$coefficients[1]+(model$coefficients[2]*length))
  (order_normalized)
}

如果将这两个变量输入到函数中,它将使用最小二乘法将前者归一化。

我建议不要按长度归一化,而是按给定长度的最大可能子序列数进行归一化。

由重复字母组成的序列达到最大值。例如,如果字母表是 {A,B,C},则长度为 6 的序列的最大值将是 ABCABC 的子序列数。

此最大值的上限是只要不超过字母表的大小,它就是最大值。2