В целом, двумя основными подходами к моделированию являются так называемые «механистические» и «эмпирические» подходы. Оба имеют своих сторонников (и их хулителей). Механистический подход утверждает, что моделирование должно исходить из понимания основных явлений (механизма), которое затем переводится на некоторый тип математических уравнений (уравнений), которые затем подгоняются к данным (для проверки механизма). Эмпирический подход собирает (обычно длинный) список моделей (уравнений) и стремится найти тот, который «подходит лучше всего». Эмпирическое моделирование привлекательно, но опасно, потому что оценка, когда у вас есть «хорошая подгонка», не является тривиальной - хотя ее часто трактуют именно так.
Вы не дали нам почти достаточно информации, чтобы сформулировать механистическую модель, так вот иллюстрация пару эмпирических моделей, как поучительная история:
Finite-time singularity models популярны с типом данных. Среди прочего, эти модели используются для «прогнозирования» stock market bubbles (модель LPPL). Основная идея заключается в том, что наступает катастрофа (сингулярность), и мы хотим предсказать, когда. Таким образом, мы используем функцию вида:
у = а × (с-х) б
С Ь < 0, у приблизившегося особенность при х -> с.
В R коде, мы можем подобрать модель, как это выглядит следующим образом:
# Finite-Time Singularity Model
library(minpack.lm)
f <- function(par,x) {
a <- par[1]
b <- par[2]
c <- par[3]
a * (c - x)^b
}
resid <- function(par,obs,xx) {obs-f(par,xx)}
start <- c(a=1, b=-1, c=2100)
nls.out <- nls.lm(par=start, fn=resid, obs =dat$incidents, xx=dat$year,
control = nls.lm.control(maxiter=500))
coef(nls.out)
with(dat, plot(incidents~year, main="Finite-Time Singularity Model"))
lines(dat$year,f(coef(nls.out),year), col=2, lwd=2)
Это дает то, что, как представляется, "очень хорошо подходит":
В самом деле, модель завышает инциденты на раннем этапе и, как правило, занижает их позже (что ужасно, потому что мы хотим предсказать будущее). На рисунке остатков это ясно видно.
with(dat,plot(year,resid(coef(nls.out),incidents,year),
main="Residuals Plot", ylab="residuals"))
Другой подход отмечает, что ваши данные "рассчитывает" (например, количество инцидентов в год). Это предполагает обобщенную линейную модель в семействе пуассоновского:
# generalized liner model, poisson family
fit.glm <- glm(incidents ~year,data=dat,family=poisson)
with(dat,plot(incidents~year))
lines(dat$year,predict(fit.glm,type="response"), col=2, lwd=2)
par(mfrow=c(2,2))
plot(fit.glm)
Это подходит лучше, но все еще не очень хорошо, как показывают диагностические участки. Остатки следуют тенденции, они обычно не распределяются, а некоторые из точек данных имеют неприемлемо высокое плечо.
Привет и добро пожаловать в переполнение стека. Вообще, люди здесь любят видеть вопросы, которые показывают некоторые усилия. Пожалуйста, рассмотрите возможность редактирования –
Существует ли какой-либо известный теоретический способ увеличения числа инцидентов за эти годы? Экспоненциальный? Логарифмические? Я думаю, вам, вероятно, нужно подумать о том, чего вы хотите от анализа. Вы можете запустить «предсказать» данные и получить абсолютно бессмысленные результаты, иначе вы не смогли бы. – thelatemail
Проблема в том, что данные не завершены, это не смещение. Тем не менее, процесс по-прежнему находится под продолжительностью, но мне нужно будет иметь некоторые результаты. В дополнение к вышеуказанной проблеме, я принимаю во внимание, чтобы рассчитать остаточный анализ и, пожалуйста, взгляните на гистограмму ниже и дайте мне знать, если я на правильном пути! ! [Остаточная гистограмма] (https://www.dropbox.com/s/wohq5s1bip7eog7/ResidualsHistogram.png). – user3251330