Я написал модель биномиальной регрессии для прогнозирования распространенности магматических камней v
на месте археологических раскопок на основе близости к реке river_dist
, но когда я использую функцию predict(), я получаю странные циклические результаты вместо кривой I. ожидал. Для справки мои данные:
v n river_dist
1 102 256 1040
2 1 11 720
3 19 24 475
4 12 15 611
Что мне подходит к этой модели:
library(bbmle)
m_r <- mle2(ig$v ~ dbinom(size=ig$n, prob = 1/(1+exp(-(a + br * river_dist)))),
start = list(a = 0, br = 0), data = ig)
Это дает коэффициент, который при обратном преобразовании предполагает снижение вероятности появления изверженных камней на метр от реки примерно на 0,4% (br = 0,996):
exp(coef(m_r))
Это все хорошо. Но когда я пытаюсь предсказать новые значения, я получаю странную цикличность значений:
newdat <- data.frame(river_dist=seq(min(ig$river_dist), max(ig$river_dist),len=100))
newdat$v <- predict(m_r, newdata=newdat, type="response")
plot(v~river_dist, data=ig, col="red4")
lines(v ~ river_dist, newdat, col="green4", lwd=2)
Пример прогнозируемых значений:
river_dist v
1 475.0000 216.855114
2 480.7071 9.285536
3 486.4141 20.187424
4 492.1212 12.571487
5 497.8283 213.762248
6 503.5354 9.150584
7 509.2424 19.888471
8 514.9495 12.381805
9 520.6566 210.476312
10 526.3636 9.007289
11 532.0707 19.571218
12 537.7778 12.180629
Почему значения циклически меняются вверх и вниз, создавая сумасшедшие всплески на графике?
plogis(tcrossprod(coef(m_r), cbind(1, newdat$river_dist)))
, но это не ответит на ваш вопрос. - person user20650   schedule 25.05.2020newdat$n = 1
. ps вам не нужно использоватьig$
, так как вы используетеdata=
, т.е. используйтеmle2(v ~ dbinom(size=n, ...
- person user20650   schedule 25.05.2020