繁体   English   中英

R中的概率密度函数,用于预测事件的下一个值

[英]Probability Density Functions in R for predicting next value of incidents

我需要对R中的以下数据进行概率密度预测:

year = c(1971, 1984, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 
2007, 2008, 2009, 2010, 2011, 2012, 2013)
incidents = c(1, 1, 1, 1, 3, 1, 6, 6, 9, 11, 21, 37, 38, 275, 226, 774, 1064)

R中的are data.frame像:

dat <- data.frame(year,incidents)

目标和想法是根据几年做出预测,并对可用数据的最后一年进行“预测”。

我是R语言的新手,因此欢迎您提出任何建议,意见等。 提前致谢。

概括地说,建模的两种主要方法是所谓的“机械”方法和“经验”方法。 两者都有他们的拥护者(和反对者)。 力学方法断言,建模应从对潜在现象(机理)的理解开始,然后将其转化为某种数学方程式,然后将其拟合到数据中(以测试机理)。 经验方法汇集了一个(通常很长的)模型(方程式)列表,并试图找到“最合适”的模型。 经验建模很吸引人,但却很危险,因为评估“合适”的时间并不是一件容易的事,尽管通常会采用这种方法。

您没有给我们足够多的信息来建立机械模型,因此,以下是一些经验模型的说明,作为一个警告性的故事:

有限时间奇异模型在您的数据类型中很流行。 这些模型尤其用于“预测” 股市泡沫 (LPPL模型)。 基本思想是灾难(奇点)即将到来,我们想预测何时。 因此,我们使用以下形式的函数:

y = a×(cx) b

当b <0时,y接近x-> c的奇点。

在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)

如诊断图所示,这种拟合更好,但仍然不是很好。 残差遵循趋势,它们不是正态分布的,并且某些数据点具有无法接受的高杠杆率。

dat <- data.frame(year,incidents)
with(dat, plot(incidents~year))

在此处输入图片说明

所以发生了什么变化...但是,如果发生事故,是什么导致数量突然增加? 只有你,科学家,才拥有钥匙。 您可能可以预测,未来一两年会有所增加,但是这种增加是否遵循指数或逻辑模式取决于潜在的研究领域。 如果您处于通常所说的增长的“对数阶段”,则逻辑模型将不会十分准确,因为每年的事件上限是未知的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM