楼主: zhaokg
1448 0

Bayesian时间序列趋势分析,季节分解,和突变点分析 (R, Python, and Matlab) [推广有奖]

  • 2关注
  • 0粉丝

初中生

42%

还不是VIP/贵宾

-

威望
0
论坛币
1181 个
通用积分
36.3389
学术水平
12 点
热心指数
11 点
信用等级
11 点
经验
704 点
帖子
10
精华
0
在线时间
17 小时
注册时间
2006-5-15
最后登录
2024-4-16

楼主
zhaokg 发表于 2024-2-24 07:09:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
借贵宝地分享我开发的一个贝叶斯间序列分析模型BEAST。它主要用于把时间序列分解为趋势(trend)和季节周期波动(seasonality), 同时对这2项也进行突变点检测 (structural breaks or changepoints)。如果时间序列没有季节项,也可以只进行趋势分析和突变点检测。(相比传统的突变点或者断点分析方法,它的优势是不仅告诉那儿发生突变,并且给出每个时间点发出突变的概率;也可以告诉发生几个突变点的概率,) 这个算法已经在10多个领域被应用过(例如环境,生态,地球科学, 心理,医学,政治学,化学,金融,教育学 ...),其中包括一些发表文章用它来分析经济人文相关的时间序列数据。 我觉的BEAST可能对分析某些及经管相关的时间学列数据或许有点用处。 这个算法在这个网址有更多介绍 https://github.com/zhaokg/Rbeast.  

这个算法可以在R, Matlab,或者 Python中调用。

在R中,已经做成一个package,可以直接用install.packages("Rbeast")安装

  1. install.packages("Rbeast")
  2. library(Rbeast)
  3. data(Nile)                                       #  annual streamflow of the Nile River   
  4. out = beast(Nile, season='none')      #  'none': trend-only data without seasonlaity   
  5. print(out)                  
  6. plot(out)
复制代码

在Python中,已经做成一个package放在https://github.com/zhaokg/Rbeast/tree/master/Matlab手动下载:
  1. beastPath = 'c:\beast'                                                 % 本地安装目录
  2. eval(webread('http://b.link/rbeast',weboptions('cert','')))  % 自动安装在beastPath指定目录
  3. load('Nile.mat')                                                          % 尼罗河年径流量
  4. out = beast(Nile, 'season', 'none','start', 1871)               % trend-only data without seasonality
  5. printbeast(out)
  6. plotbeast(out)
  7. %下图为这个例子的结果
  8. %第一个截屏是 突变点个数的概率,比如说有54%的概率存在1个突变点
  9. %第二个截屏是 画出的主要结果
复制代码



Matlab中另外一个例子

  1. load('googletrend.mat')               % 美国自2004年每月在Google搜索'beach'关键词的频度:这个时间序列有一个周期项
  2. o = beast( beach )                       % Apply BEAST to the 'beach time series: beach is a data vector only; the time
  3.                                                  % info can be supplied using the start and deltat
  4.                                                  % keywords, as in the next commented line
  5. %o = beast( beach,'start',[2004,1],'deltat',1/12 )
  6. printbeast(o)          % print the changepoints detected
  7. plotbeast(o)            % plot the results: o.season.Y and o.trend.Y are the seasonal and trend compoents
复制代码













二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Bayesian MATLAB python matla Bayes

已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
冰枫冷羽 + 100 + 20 + 1 精彩帖子
Sunknownay + 6 + 6 + 6 鼓励积极发帖讨论

总评分: 经验 + 100  论坛币 + 20  学术水平 + 7  热心指数 + 6  信用等级 + 6   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-7 23:14