Enumerate and resolve the linear combinations in a numeric matrix
findLinearCombos(x)
a list with elements:
If there are linear combinations, this will be a list with elements for each dependency that contains vectors of column numbers.
a list of column numbers that can be removed to counter the linear combinations
a numeric matrix
Kirk Mettler and Jed Wing (enumLC
) and Max Kuhn
(findLinearCombos
)
The QR decomposition is used to determine if the matrix is full rank and then identify the sets of columns that are involved in the dependencies.
To "resolve" them, columns are iteratively removed and the matrix rank is rechecked.
testData1 <- matrix(0, nrow=20, ncol=8)
testData1[,1] <- 1
testData1[,2] <- round(rnorm(20), 1)
testData1[,3] <- round(rnorm(20), 1)
testData1[,4] <- round(rnorm(20), 1)
testData1[,5] <- 0.5 * testData1[,2] - 0.25 * testData1[,3] - 0.25 * testData1[,4]
testData1[1:4,6] <- 1
testData1[5:10,7] <- 1
testData1[11:20,8] <- 1
findLinearCombos(testData1)
testData2 <- matrix(0, nrow=6, ncol=6)
testData2[,1] <- c(1, 1, 1, 1, 1, 1)
testData2[,2] <- c(1, 1, 1, 0, 0, 0)
testData2[,3] <- c(0, 0, 0, 1, 1, 1)
testData2[,4] <- c(1, 0, 0, 1, 0, 0)
testData2[,5] <- c(0, 1, 0, 0, 1, 0)
testData2[,6] <- c(0, 0, 1, 0, 0, 1)
findLinearCombos(testData2)
Run the code above in your browser using DataLab