Я начал немного копаться в функции plot.lm , эта функция дает шесть графиков для lm:
- График остатков от установленных значений
- График Scale-Location для sqrt (| остатки |) по отношению к подобранным значениям
- Нормальный график QQ, график расстояний Кука против меток строк
- График остатков против рычагов
- график расстояний Кука от плеча / (1 плечо)
И мне интересно, какие другие общие / полезные расширения существующих графиков существуют для линейных моделей, и как они могут быть сделаны в R? (ссылки на статьи пакетов также приветствуются)
Таким образом, функция boxcox (из {MASS}) является примером другого полезного диагностического графика (и такой ответ был бы отличным), однако мне более любопытно узнать о вариациях / расширениях на существующих диагностических графиках по умолчанию для lm в R (хотя в целом другие замечания по теме всегда приветствуются).
Вот несколько простых примеров того, что я имею в виду:
#Some example code for all of us to refer to
set.seed(2542)
x1 <- rnorm(100)
x2 <- runif(100, -2,2)
eps <- rnorm(100,0,2)
y <- 1 + 2*x1 + 3*x2 + eps
y[1:4] <- 14 # adding some contaminated points
fit <- lm(y~x1+x2)
#plot(y~x1+x2)
#summary(fit)
Чтобы построить остатки против каждого из потенциальных х
plot(resid(fit)~x1); abline (h = 0)
plot(resid(fit)~x2); abline (h = 0)
# plot(resid(fit)~x1+x2) # you can also use this, but then you wouldn't be able to use the abline on any plot but the last one
Чтобы добавить строку 0-1 (как эта строка называется на английском языке ?!) в qqplot, чтобы увидеть, насколько отклоняется от нее qqline
plot(fit, which = 2); abline(0,1, col = "green")
Построить qq-график с использованием внешне изученных остатков
# plot(fit, which = 2); abline(0,1, col = "green") # The next command is just like this one
qqnorm(rstandard(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
qqnorm(rstudent(fit), ylim = c(-2.2,4.2)); qqline(rstudent(fit), lty = 2) ;abline(0,1, col = "green")
# We can note how the "bad" points are more extreme when using the rstudent
r
regression
linear-model
diagnostic
Таль Галили
источник
источник
Ответы:
Пакет
car
имеет достаточно много полезных функций для диагностики графиков линейных и обобщенных линейных моделей. По сравнению с участками vanilla R они часто дополняются дополнительной информацией. Я рекомендую вам попробоватьexample("<function>")
следующие функции, чтобы увидеть, как выглядят графики. Все сюжеты подробно описаны в главе 6 Fox & Weisberg. 2011. Компаньон R в прикладной регрессии. 2-е изд.residualPlots()
наносит на карту остатки Пирсона против каждого предиктора (диаграммы рассеяния для числовых переменных, включая подгонку по Малосу, коробочные диаграммы для факторов)marginalModelPlots()
отображает диаграммы рассеяния переменной ответа для каждого числового предиктора, включая подгонку по LowessavPlots()
отображает графики частичной регрессии: для каждого предиктора это диаграмма рассеяния а) остатков от регрессии переменной отклика для всех других предикторов по отношению к б) остатков от регрессии предиктора по отношению ко всем остальным предикторамqqPlot()
для квантиль-квантиль сюжет, который включает в себя доверительный конвертinfluenceIndexPlot()
отображает каждое значение расстояния Кука, шляпного значения, p-значения для теста выбросов и изученного остатка на графике спайка по индексу наблюденияinfluencePlot()
дает пузырьковый график изученных остатков по отношению к значениям hat, с размером пузырька, соответствующим расстоянию Кука, также см.dfbetaPlots()
иleveragePlots()
boxCox()
crPlots()
предназначен для компонент + остаточные графики, вариант которых представляет собой графики CERES (объединение условных ожиданий и остатков), предоставленныеceresPlots()
spreadLevelPlot()
предназначен для оценки непостоянной дисперсии ошибок и отображает абсолютные стедентифицированные остатки в зависимости от установленных значенийscatterplot()
обеспечивает значительно улучшенные диаграммы рассеяния, включая коробочные диаграммы вдоль осей, эллипсы достоверности для двумерного распределения и линии прогнозирования с доверительными полосамиscatter3d()
основывается на пакетеrgl
и отображает интерактивные 3D-диаграммы рассеяния, в том числе эллипсоиды доверительной сетки и плоскости прогнозирования, обязательно запуститеexample("scatter3d")
Кроме того, посмотрите
bplot()
из пакетаrms
на другой подход к иллюстрации общего распределения трех переменных.источник
Этот ответ сфокусирован на том, что доступно в базе R, а не на внешних пакетах, хотя я согласен, что пакет Fox стоит принять.
Функция
influence()
(или ее оболочкаinfluence.measures()
) возвращает большую часть того, что нам нужно для диагностики модели, включая статистику сглаживания. Как указано в Chambers и Статистические модели Хасти в S (Wadsworth & Brooks, 1992), его можно использовать в сочетании сsummary.lm()
. Один из примеров, представленных в так называемой «белой книге» (стр. 130-131), позволяет вычислять стандартизированные (остатки с одинаковой дисперсией) и изученные (то же самое с другой оценкой для SE) остатки, DFBETAS (изменение в коэффициенты, масштабируемые SE для коэффициентов регрессии), DFFIT (изменение подобранного значения, когда наблюдение прекращается) и DFFITS (то же самое, с единичной дисперсией) измеряют без особых затруднений.На основании вашего примера и определения следующих объектов:
мы можем вычислить вышеуказанные величины следующим образом:
(Это Таблица 4.1 , стр. 131.)
Чемберс и Хасти дают следующий код S / R для вычисления DFBETAS:
Почему я упоминаю этот подход? Потому что, во-первых, я считаю, что это интересно с педагогической точки зрения (это то, что я использую при обучении курсам вводной статистики), поскольку оно позволяет проиллюстрировать, что можно вычислить на основе вывода подобранной линейной модели, подогнанной в R (но то же самое применять с любым другим статистическим пакетом). Во-вторых, так как вышеуказанные величины будут возвращаться в виде простых векторов или матриц в R, это также означает, что мы можем выбрать графическое устройство, которое мы хотим - lattice или ggplot - для отображения этой статистики, или использовать их для улучшения существующей график (например, выделите значения DFFITS на диаграмме рассеяния, варьируя размер точки
cex
).источник