Часто полезно построить линию (например, подобранную линию регрессии или непараметрическую линию LOWESS) по данным. Аналогичным образом, когда переменные смешаны, часто бывает полезно нанести на график данные x1, y, стратифицированные по x2. Однако я не могу понять, как совместить оба метода, используя ?coplot. Это должно быть вполне естественно в решетке, но я могу Там тоже не понял как это сделать.
Ниже приведены некоторые данные для игры:
library(MASS)
set.seed(7422)
X <- mvrnorm(100, mu=c(5,5), Sigma=rbind(c(2.0, 1.9),
c(1.9, 2.0) ) )
x1 <- X[,1]; x2 <- X[,2]
y <- 3 + .6*x1 - .4*x2 + rnorm(100)
m <- lm(y~x1+x2)
summary(m)$coefficients
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) 3.8281801 0.4022204 9.517619 1.476519e-15
# x1 0.5466495 0.2060269 2.653292 9.314673e-03
# x2 -0.4835804 0.2139542 -2.260205 2.604451e-02
windows()
pairs(cbind(y, x1, x2))
xs <- seq(1.6, 9.2, by=.1)
windows()
plot(y~x2)
lines(xs, predict(m, data.frame(x1=5.2, x2=xs)), col="blue")
windows()
coplot(y~x2|x1)
## doesn't work (lines on plot were drawn by hand)
# lines(xs, predict(m, data.frame(x1=mean(x1[subscripts], x2=xs)), col="blue")
# lines(lowess(y~x2, subset=x1[subscripts]), col="gray")
Матрица рассеяния исходных данных:
Вот предельный график зависимости x2
от y
с подгонкой линии регрессии и предельной линией LOWESS, построенной поверх данных. Это будет выглядеть странно для людей, которые не разбираются в статистике.
Это то, что я имею в виду. Это совместный график с моделью регрессии и линией LOWESS, подходящей для каждого слоя данных, нанесенных на график внутри каждой панели.