2016-01-28 7 views

ответ

3

Возможно, вы думаете, crossprod()? Это не так много нажатий клавиш, но немного более изящно и, according to its help file, это может быть немного быстрее, чем наивная конструкция.

x <- matrix(rnorm(9), ncol=3) 
solve(crossprod(x)) 
#    [,1]  [,2]  [,3] 
# [1,] 1.34638151 -0.02957435 0.8010735 
# [2,] -0.02957435 0.32780020 -0.1786295 
# [3,] 0.80107345 -0.17862950 1.4533671 
solve(t(x) %*% x) 
#    [,1]  [,2]  [,3] 
# [1,] 1.34638151 -0.02957435 0.8010735 
# [2,] -0.02957435 0.32780020 -0.1786295 
# [3,] 0.80107345 -0.17862950 1.4533671 
+1

В дополнение к читабельности и скорости, возможно, речь идет о точности. Обычная рекомендация заключается в том, чтобы избежать явного вычисления обратного X'X, если вас интересует только оценка OLS. См. «Расчет наименьших квадратов в R» Дуга Бейтса в R News 2004 (1), 17-20. https://cran.r-project.org/doc/Rnews/Rnews_2004-1.pdf –

+0

@Achim Очень хорошая точка. Девять раз из десяти, поэтому кто-то захочет обратить внимание на X'X, не так ли? Спасибо, что оставил ссылку на статью Бейтса. –

 Смежные вопросы

  • Нет связанных вопросов^_^