У меня есть некоторые данные о продажах по продуктам и странам.
У меня также есть промежуточный итог, описанный как «Другие продукты». Я хотел бы решить и определить, какие продукты были включены в промежуточный итог «Другие продукты».
Эту проблему можно решить с помощью функции Solver в Excel. Однако набор данных слишком велик, что приводит к сбою Excel.
Я надеюсь, что есть какой-то способ решить это в R?
Некоторые примеры данных:
data <- matrix(c(0,10,0,5,0,3,6,2,0,1), nrow = 5)
rownames(data) <- c("A", "B", "C", "D", "E")
colnames(data) <- c("USA", "Canada")
Затем с промежуточными итогами 10 и 8 для США и Канады ответом будут продукты B и C.
У меня есть еще одно осложнение: мои промежуточные итоги представляют собой округленные числа, а необработанные данные не обоснованы. Поэтому в идеале нужно решение, которое допускает некоторую погрешность.
Обновление (моя попытка использовать CVXR):
data <- data.matrix(read.csv("goalseek.csv", header=TRUE, row.names = 1))
goal <- as.numeric(t(read.csv("target.csv", header=TRUE)))
nr <- nrow(data)
nc <- ncol(data)
'Quadratic Optimisation'
b <- Bool(nr)
objective <- Minimize( sum((t(data) %*% b - goal)^2) )
problem <- Problem(objective)
soln <- solve(problem)
rownames(data)[round(soln$getValue(b)) == 1]