Как построить модель линейной регрессии и модель пуассоновской регрессии на одном графике в R? - PullRequest
0 голосов
/ 02 апреля 2020

Я работаю с простым набором данных, который касается возраста слона (объяснительно) и сколько успешных партнеров по спариванию имел каждый слон (ответ). Я нашел две модели: одна модель линейной регрессии, а вторая модель Пуассона. Я хотел бы сделать график спаривания против возраста, а затем наложить обе модели на этот же график. Тогда я бы сравнил, какой из них подходит лучше визуально. Я возился с ggplot, просто с обычной функцией заговора, с некоторыми строками. Я действительно понятия не имею, как это сделать.

Заранее спасибо.

1 Ответ

0 голосов
/ 02 апреля 2020

Если вы просто хотите визуализировать, то довольно просто использовать predict(, type = "response") как способ показать полученную модель. Я использую glm для обеих моделей, но технически lm также будет работать для линейной модели:

set.seed(11)
# sample size
n <- 50
# regression coefficients
beta0 <- 0
beta1 <- 0.04
beta2 <- 0.05
# generate covariate values
x <- round(runif(n=n, min=1, max=40))
# compute mu's
mu <- exp(beta0 + beta1 * x + beta2^2 * x)
# generate Y-values
y <- rpois(n = n, lambda=mu)
# data set
data <- data.frame(matings=y, age=x)
data



fitLM <- glm(matings ~ age, data, family = gaussian(link = "identity"))
fitPOIS <- glm(matings ~ age, data, family = poisson(link = "log"))
AIC(fitLM, fitPOIS) # poisson has lower AIC

newdat <- data.frame(age = seq(1,40,0.1))
newdat$predLM <- predict(fitLM, newdata = newdat, type = "response")
newdat$predPOIS <- predict(fitPOIS, newdata = newdat, type = "response")

plot(matings ~ age, data)
lines(predLM ~ age, newdat, col = 2)
lines(predPOIS ~ age, newdat, col = 4)
legend("topleft", legend = c("lm", "poisson"), col = c(2,4), lty = 1)

enter image description here

...