R - построение результатов непараметрической регрессии с помощью npreg () игнорирует par (mfrow = c (1, 2)) - PullRequest
3 голосов
/ 12 августа 2011

Я запустил 20 непараметрических регрессий с помощью команды "npreg" и сохранил результаты.Теперь я хотел бы отобразить (с учетом стиля группы и асимптотики метода) эти результаты в 1 мультиграфе, например, 3 графика (3 выхода) на строку.Я попытался использовать par (mfrow = c (,)) или split.screen (), но кажется, что он не подходит для таких графиков, поскольку он всегда перезаписывает предыдущий граф.

Другими словами,если я выполню:

w1 <- lm(w ~ p1)
par(mfrow = c(2, 2))
plot(w1)

, тогда я получу 4 графика в одном графическом устройстве.Но если я запускаю

w1 <- npreg(w ~ p1)
w2 <- npreg(w ~ p2)
par(mfrow = c(1, 2))` 
plot(w1)
plot(w2)

, то на выходе будет только один график (а второй перезаписывает первый).И я хотел бы, чтобы эти 2 графика были рядом друг с другом.

1 Ответ

2 голосов
/ 13 августа 2011

Метод plot для объектов класса npregression должен по какой-то причине переопределять настройку номинала. В конце концов он вызывает npplot(), но есть длинная цепочка промежуточных шагов, которые я не смог выполнить.

Как правило, я не думаю, что вы хотите, чтобы функции plot произвольно перекрывали простую команду, такую ​​как mfrow, без видимой причины (или непоследовательности), поэтому мне это кажется ошибочным.

Я бы предложил отправить письмо по электронной почте сопровождающему и спросить, почему следующий код не дает такой же вывод. Вы ожидаете 4 сюжета в одном устройстве.

Вот два примера из пакета (первый слегка измененный), демонстрирующих два разных поведения:

4 отдельных участка

data(Italy)
bw <- npregbw(formula=gdp~ordered(year), data = Italy)
model <- npreg(bws = bw, gradients = TRUE)
par(mfrow = c(2, 2))
plot(model)
points(ordered(Italy$year), Italy$gdp, cex=.2, col="red")
plot(1:10)
plot(1:5)
plot(1)

4 сюжета в одном устройстве

data(cps71)
model.par <- lm(logwage ~ age + I(age^2), data = cps71)
model.np <- npreg(logwage ~ age,
                  regtype = "ll",
                  bwmethod = "cv.aic",
                  gradients = TRUE,
                  data = cps71)
par(mfrow=c(2,2))

plot(cps71$age,cps71$logwage,xlab="age",ylab="log(wage)",cex=.1)
lines(cps71$age,fitted(model.np),lty=1,col="blue")
lines(cps71$age,fitted(model.par),lty=2,col="red")

plot(cps71$age,gradients(model.np),xlab="age",ylab="gradient",type="l",lty=1,col="blue")
lines(cps71$age,coef(model.par)[2]+2*cps71$age*coef(model.par)[3],lty=2,col="red")

plot(cps71$age,fitted(model.np),xlab="age",ylab="log(wage)",ylim=c(min(fitted(model.np)-2*model.np$merr),max(fitted(model.np)+2*model.np$merr)),type="l")
lines(cps71$age,fitted(model.np)+2*model.np$merr,lty=2,col="red")
lines(cps71$age,fitted(model.np)-2*model.np$merr,lty=2,col="red")

plot(cps71$age,gradients(model.np),xlab="age",ylab="gradient",ylim=c(min(gradients(model.np)-2*model.np$gerr),max(gradients(model.np)+2*model.np$gerr)),type="l",lty=1,col="blue")
lines(cps71$age,gradients(model.np)+2*model.np$gerr,lty=2,col="red")
lines(cps71$age,gradients(model.np)-2*model.np$gerr,lty=2,col="red")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...