【发布时间】:2017-03-17 17:10:26
【问题描述】:
我有一个变量ZZ,其整数级别为 1、2 或 3,我希望尽可能使该变量与数据框中的其余变量不相关。
我实际上是在尝试通过选择值 1、2 或 3 来重新创建该变量,以最小化它与其他数据框变量的相关性。
如何在 R 中完成此任务?我不清楚如何在 R 中实现这种选择整数进行优化的机制。
我的函数计算相关性绝对值的总和。
mincorr <- function(x){
abs(cor(df[, x], df$PS))+ abs(cor(df[, x], df$PROG))+ abs(cor(df[, x], df$RX))
}
这是我的部分数据的示例:
df <- read.table(text="PS PROG RX ZZ
2 2 1 1
2 3 2 2
2 2 2 1
1 2 1 1
2 2 2 2
2 2 2 3
3 2 1 1
2 2 2 1
2 2 1 2
2 2 1 2", header=T)
我认为,由于可能值(1-3)的范围很小,我可以进行网格搜索。
library(NMOF)
gridSearch(mincorr("ZZ"), list(seq(1,3)))$minlevels
当然,上面的代码失败了。我是否需要以某种方式将 ZZ 的每一行指定为列表中的约束?我的数据集不是太大 - 700 行,但我认为这可能会变得难以管理。任何其他方法来做到这一点也非常感谢。
【问题讨论】:
标签: r optimization