二进制时间序列
机器算法验证
时间序列
二进制数据
2022-02-28 17:15:39
3个回答
一种方法可能是假设伯努利序列可以通过使用 Probit 变换的潜在正态随机变量来描述。那是您实现的其中和。这样,您可以在变量上放置您喜欢的任何时间序列(例如 ARIMA)结构,然后使用标准时间序列技术来预测未来的观察结果(例如 Holt-Winters)。应该可以在 Stan 或 JAGS 中编写类似的代码,但鉴于伯努利过程为您提供的潜在状态的“玻璃黑暗”视图,您可能不会得到很好的预测。
最简单的模型是线性回归。您可以使用 ggplot 绘制数据:
#for reproducing
set.seed(200)
#simple example. Assume your data is simple binomial variable with probability 0.3
data <- data.frame(time = 1:200, val=sample(c(0,1), size = 200, replace = T, prob = c(0.3, 0.7)))
#plot using ggplot and add linear regression and confidence interval
ggplot(data, aes(x = time, y=val)) + geom_smooth(method=lm) +geom_point()
#Now we can try to create linear regression
y = data$time
x = data$val
fitData <- lm(x ~ y)
predict(fitData, newdata = data.frame(y=201:224), interval="confidence")
这是最简单的模型,还有其他非线性模型可能更适合您的数据。另外,请记住,您可能必须使用日期日志才能更好地适应。关于多项式回归等非线性回归,您可以在此处阅读很多内容
现在,它需要额外的分析,但必须确定您的事件是否独立。有可能存在某种您可能无法考虑的混杂变量。您可能想在此处查看贝叶斯线性回归(假设您获得的维度不仅仅是时间和是/否值)
事故数据?我首先假设有每小时的季节性和每天的季节性。在不知道事故类型的情况下,您可能可以查看周一至周五的每小时汇总,并分别处理周六和周日的每小时,因此您有 3 个小时池,24 小时(周一至周五)、24 小时(周六)和24 日(星期日)。
进一步减少数据可能是可能的,但假设不是,只需取平均值。例如,周日下午 3 点的平均值可能是 0.3(发生事故的几率为 30%)。下午 4 点的平均值可能是 0.2,依此类推。
下午 3 点或 4 点不发生事故的概率为 (1-.3)(1-.2) = .56,因此在这两个小时内发生事故的概率为 0.44,以此类推。
这似乎是一个很好的、简单的起点。
其它你可能感兴趣的问题