Я всегда использую lm()
в R для выполнения линейной регрессии на . Эта функция возвращает коэффициент такой, что
Сегодня я узнал об общих наименьших квадратах, и эту princomp()
функцию (анализ основных компонентов, PCA) можно использовать для ее выполнения. Это должно быть хорошо для меня (точнее). Я сделал несколько тестов, используя princomp()
:
r <- princomp( ~ x + y)
Моя проблема: как интерпретировать ее результаты? Как я могу получить коэффициент регрессии? Под «коэффициентом» я подразумеваю число которое я должен использовать для умножения значения чтобы получить число, близкое к .
r
pca
least-squares
deming-regression
total-least-squares
нижняя палата парламента Ирландии
источник
источник
Ответы:
Обычные наименьшие квадраты против общих наименьших квадратов
Давайте сначала рассмотрим простейший случай только одной предикторной (независимой) переменной . Для простоты, пусть и x, и y центрированы, т. Е. Точка пересечения всегда равна нулю. Различие между стандартной регрессией OLS и «ортогональной» регрессией TLS ясно показано на этом (адаптированном мной) рисунке из самого популярного ответа в самой популярной теме на PCA:x x y
МНК припадки уравнение путем минимизации квадратов расстояний между наблюдаемыми значениями Y и прогнозируемых значений у . TLS соответствует тому же уравнению, минимизируя квадратные расстояния между точками ( x , y ) и их проекцией на линию. В этом простейшем случае линия TLS является просто первым основным компонентом двумерных данных. Чтобы найти β , проведите PCA по ( x , y ) точкам, т.е. построитеy=βx y y^ (x,y) β (x,y) ковариационную матрицу 2 × 2 Σ и найдите ее первый собственный вектор v =2×2 Σ . ; тогда β = v y / v xv=(vx,vy) β=vy/vx
В Matlab:
В R:
Кстати, это даст правильный наклон, даже если и y не были отцентрированы (потому что встроенные функции PCA автоматически выполняют центрирование). Чтобы восстановить перехват, вычислите β 0 = ˉ y - βx y β0=y¯−βx¯ .
OLS против TLS, множественная регрессия
Для заданной зависимой переменной и множества независимых переменных x i (опять же, все по центру для простоты) регрессия соответствует уравнению y = β 1 x 1 + … + β p x p . МНК делает подгонку путем минимизации квадратов ошибок между наблюдаемыми значениями у и предсказанных значений у . TLS подгоняет, минимизируя квадрат расстояния между наблюдаемыми ( x , y ) ∈ R p + 1Y Икся
Обратите внимание, что больше нет «линии регрессии»! Вышеупомянутое уравнение определяет гиперплоскость : это двухмерная плоскость, если есть два предиктора, трехмерная гиперплоскость, если есть три предиктора, и т. Д. Таким образом, приведенное выше решение не работает: мы не можем получить решение TLS, взяв только первый ПК (который является линия). Тем не менее, решение может быть легко получено через PCA.
Как и раньше, PCA проводится по точкам. Это дает р + 1 собственных векторов в столбцах V . Первые р собственных векторов определяют р - мерную гиперплоскость H , что нам нужно; последний (число p + 1 ) собственный вектор v p + 1 ортогонален ему. Вопрос в том, как преобразовать основу H, заданную первым( х , у) p+1 V p p H p+1 vp+1 H собственных векторов в рp β коэффициенты.
Заметим , что если положить для всех я ≠ K и только х К = 1 , то Y = р к , то есть вектор ( 0 , ... , 1 , ... , β к ) ∈ H лежит в гиперплоскости H , С другой стороны, мы знаем, что v p + 1 = ( v 1 , … , v p + 1xi=0 i≠k xk=1 y^=βk
В Matlab:
В R:
Опять же, это даст правильные наклоны, даже если и y не были отцентрированы (потому что встроенные функции PCA автоматически выполняют центрирование). Чтобы восстановить перехват, вычислите β 0 = ˉ y - ˉ x β .x y β0=y¯−x¯β
Решение в закрытой форме для TLS
Многофакторная множественная регрессия
Эту же формулу можно обобщить для многомерного случая, но даже для определения того, что делает многомерный TLS, потребуется некоторая алгебра. Смотрите Википедию на TLS . Многомерная регрессия OLS эквивалентна группе одномерных регрессий OLS для каждой зависимой переменной, но в случае TLS это не так.
источник
Основываясь на найденной здесь наивной реализации GNU Octave , может сработать что-то вроде этого (крупица соли, уже поздно).
источник
princomp
вместо анализа регрессии общих наименьших квадратов выполняется анализ главных компонент . Насколько я знаю, нет ни функции R, ни пакета, который делает TLS; самое большее, это регрессия Деминга в MethComp .Тем не менее, пожалуйста, воспринимайте это как предположение, что оно, скорее всего, не стоит того.
источник