#r #random #linear-algebra
#r #Случайный #линейная алгебра
Вопрос:
Я моделирую некоторые розыгрыши, используя случайные числа. Маловероятно, сгенерированные числа не являются случайными, как хотелось бы. На самом деле, я получаю, что существуют некоторые линейные комбинации.
В деталях у меня есть следующие исходные данные:
start_vector = c(1,10,30,40,50,100) # length equal to 6
residual_of_model = 5
n = 1000 # Number of simulations
Я пытаюсь смоделировать n
наблюдения из случайного нормального распределения для каждого из start_vector
элементов, предполагая, что это «случайный шум» для добавления к исходному значению (то есть к тому, которое входит start_vector
):
out_vec <- matrix(NA, nrow = n, ncol = length(start_vector))
for (h_aux in 1:length(start_vector))
{
random_noise <- rnorm(n, 0, residual_of_model)
out_vec[,h_aux] <- as.numeric(start_vector[h_aux]) random_noise
}
На этом этапе я получаю матрицу размером 6×1000. Теоретически я предполагаю, что все столбцы и строки в матрице линейно независимы между ними.
Если я попытаюсь это проверить, используя findLinearCombos()
функцию из caret
пакета, я получу, что все столбцы независимы:
caret::findLinearCombos(out_vec)
Если я попытаюсь оценить независимость между строками, используя следующий код:
caret::findLinearCombos(t(out_vec))
Я получаю, что все строки от 7 до 1000 представляют собой линейную комбинацию первых 6 (длина start_vector
).
На мой взгляд, это действительно странно, я бы хотел вообще не наблюдать никаких зависимостей, поскольку строки генерируются с добавлением случайного числа с использованием rnorm
.
Чего мне не хватает? Есть ли какая-то ошибка? Заранее спасибо!
Комментарии:
1. Из документации функция выполняет QR-декомпозицию, и только с 6 столбцами декомпозиция устраняет все избыточные уравнения, т.Е. строку 7 до конца.
2. Ваша случайная матрица 1000×6 имеет полный ранг: 6. Ваше наблюдение согласуется с теорией линейной алгебры. Если бы было 7 свободных строк, ранг был бы равен 7. Это невозможно, ранг не может превышать количество столбцов.
3. хорошо, значит, данные не коррелируют между ними, речь идет только о
findLinearCombos
функции, верно?