Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
RCoreTeam2014.docx
Скачиваний:
46
Добавлен:
08.10.2015
Размер:
539.13 Кб
Скачать
      1. Линейные уравнения и инверсия

Решение линейных уравнений является инверсией умножения матриц. Когда после

> b <- A %*% x только A и b даны, векторxявляется решением этой системы линейных уравнений. ВR > solve(A, b)

решает систему, возвращая x(с некоторой потерей точности). Заметим, что в линейной алгебре, формально x = А-1b, где А-1 обозначает инверсию A, которая может быть вычислена: solve(A)

но редко необходимо. В цифровой форме это является и неэффективным и потенциально нестабильным, чтобы вычислить x <- solve(A) %*% bвместоsolve(A,b). Квадратичная формаxTA-1x, которая используется в многомерных вычислениях, должна быть вычислена подобноx %*% solve(A,x), вместо вычисления инверсииA.

      1. Собственные значения и собственные векторы

Функция eigen(Sm)вычисляет собственные значения и собственные векторы симметричной матрицыSm. Результат этой функции - список двух компонентов, названных значением и векторами.

Присвоение:

> ev <- eigen(Sm) присвоит этот списокev. Затемev$val- вектор собственных значенийSmиev$vec- матрица соответствующих собственных векторов. Если бы мы только нуждались в собственных значениях, мы, возможно, использовали присвоение:> evals <- eigen(Sm)$values

evalsтеперь содержит вектор собственных значений, и второй компонент отброшен. Если выражение

> eigen(Sm)

используется отдельно в качестве команды, эти два компонента напечатаны с их именами. Для больших матриц лучше избежать вычисления собственных векторов, если они не необходимы при использовании выражениях:

> evals <- eigen(Sm, only.values = TRUE)$values

      1. Сингулярное разложение и определители

Функция svd(M)берет произвольный матричный параметрМи вычисляет сингулярное разложениеМ.Она является матрицей с ортонормированными столбцамиU с одинаковым пробелом столбца какМ, вторая матрица ортонормированных столбцовV, чей пробел столбца - пробел строки М и диагональная матрица положительных значенийDтак, чтоМ = U % * % D % * % t(V).Dфактически возвращен как вектор диагональных элементов. Результатомsvd(M) является фактически список трех компонентов, названныхd, uиvс очевидными значениями.

Если М является фактически квадратной, то не трудно видеть, что: > absdetM <- prod(svd(M)$d)

вычисляет абсолютное значение определителя М. Если бы это вычисление часто было необходимо со множеством матриц, то это могло бы быть определено как функция R > absdet <- function(M) prod(svd(M)$d) после которого мы могли использоватьabsdet()лишь как другую функциюR. Как дальнейший тривиальный, но потенциально полезный пример, Вам могло бы понравиться рассматривать запись функции, скажемtr()для вычисления трассировки квадратной матрицы. [Подсказка: не следует использовать явный цикл. Смотрите снова на функциюdiag().]

У R есть встроенная функция det, чтобы вычислить определитель, включая знак, и другаяdeterminant,чтобы дать знак и модуль (дополнительно в логарифмическом масштабе).

      1. Подгонка методом наименьших квадратов и qr разложение

Функция lsfit ()возвращает список, дающий результаты процедуры подгонки методом наименьших квадратов. Такое присвоение как:

> ans <- lsfit(X, y)

дает результаты подгонки методом наименьших квадратов, где y- вектор наблюдений, иXявляется проектируемой матрицей. См. справочное руководство для большего количества деталей, и также для последующей функцииls.diag(), между прочим, для диагностики регрессии. Заметим, что главный средний параметр автоматически включен и не должен быть включен явно как столбецX. Далее отметьте, что всегда предпочтительней использоватьlm()(см.Раздел 11.2 [Линейные модели]) кlsfit()для моделирования регрессии. Другая тесно связанная функция – этоqr()и ее последователи. Рассмотрим следующие присвоения:

> Xplus <- qr(X)

> b <- qr.coef(Xplus, y)

> fit <- qr.fitted(Xplus, y)

> res <- qr.resid(Xplus, y)

Они вычисляют ортогональную проекцию yна диапазонXвfit, проекция на ортогональное дополнение вresи векторе коэффициента для проекции вb, то есть,b является по существу результатом оператора 'наклонной черты влево' Matlab.

Не предполагается, что Xимеет полный ранг столбца. Избыточность будет обнаружена и удалена при ее выявлении.

Эта альтернатива - более старый, низкий уровень способа выполнения вычислений наименьших квадратов. Хотя все еще полезный в некоторых контекстах, он был бы теперь заменен статистическими функциями моделей, как будет обсуждено в Главе 11 [Статистические модели в R ].

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]