一、功能

产生自回归滑动平均模型\(ARMA(p,q)\)的数据。

二、方法简介

自回归滑动平均模型\(ARMA(p,q)\)为

\[x(n)+\sum_{i=1}^{p}a_{i}x(n-i)=\sum_{i=0}^{q}b_{i}w(n-i)
\]

其中\(a_i(i=1,2,...,p)\)是自回归系数,\(b_i(i=1,2,...,q)\)是滑动平均系数,\(w(n)\)是白噪声。

给定白噪声\(w(n)\)的均值和方差,便可以由上式产生\(ARMA(p,q)\)的数据。

三、使用说明

是用C语言实现产生二项分布随机数的方法如下:

/************************************
a ---一维数组,长度为(p+1),ARAM(p,q)模型的自回归系数。
b ---一维数组,长度为(q+1),ARAM(p,q)模型的滑动平均系数。
p ---RAM(p,q)模型的自回归阶数。
q ---RAM(p,q)模型的滑动平均阶数。
mean ---白噪声正态分布均值mu。
sigma ---白噪声正态分布均方差sigma。
seed ---随机数种子
x ---一维数组,长度n,存放ARAM(p,q)模型的数据。
n ---放ARAM(p,q)模型的长度。
************************************/
#include "stdlib.h"
#include "gauss.c" void arma(double *a, double *b, int p, int q, double mean, double sigma, long int *seed, double *x, int n)
{
int i;
int k;
double s;
double *w; w = malloc(n * sizeof(double));
for(k = 0; k < n; k++)
w[k] = gauss(mean, sigma, seed);
x[0] = b[0] * w[0];
for(k = 1; k <= p; k++){
s = 0.0;
for(i = 1; i <= k; i++)
s += a[i] * x[k - 1];
s = b[0] * w[k] - s;
if(q == 0){
x[k] = s;
continue;
}
m = (k > q) ? q : k;
for(i = 1; i <= m; i++)
s += b[i] * w[k - i];
x[k] = s;
} for(k = (p + 1); k < n; k++){
s = 0.0;
for(i = 1; i <= p; i++)
s += a[i] * x[k - i];
s = b[0] * w[k] - s;
if(q == 0){
x[k] = s;
continue;
}
for(i = 1; i <= q; i++)
s +=b[i] * w[k - i];
x[k] = s;
}
free(w);
}

gauss.c文件参见正态分布的随机数

ARMA(p,q)模型数据的产生的更多相关文章

  1. 第二章平稳时间序列模型——AR(p),MA(q),ARMA(p,q)模型及其平稳性

      1白噪声过程: 零均值,同方差,无自相关(协方差为0) 以后我们遇到的efshow如果不特殊说明,就是白噪声过程. 对于正态分布而言,不相关即可推出独立,所以如果该白噪声如果服从正态分布,则其还将 ...

  2. 时间序列算法(平稳时间序列模型,AR(p),MA(q),ARMA(p,q)模型和非平稳时间序列模型,ARIMA(p,d,q)模型)的模型以及需要的概念基础学习笔记梳理

    在做很多与时间序列有关的预测时,比如股票预测,餐厅菜品销量预测时常常会用到时间序列算法,之前在学习这方面的知识时发现这方面的知识讲解不多,所以自己对时间序列算法中的常用概念和模型进行梳理总结(但是为了 ...

  3. 常用数字信号的产生(C实现)-ARMA模型数据生成

    ARMA模型属于信号现代谱估计的范畴,AR模型常用于信号的线性预测.AR模型最后归结为线性方程,MA最后为非线性方程,因此,AR模型使用较多. AR模型最后归结为解Yule-Walker方程,对应矩阵 ...

  4. 5、处理模型数据ModelAndView、Map、Model以及@SessionAttributes注解

    Spring MVC提供了以下几种途径输出模型数据 —— ModelAndView: 处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据.数据会添加到request域中. ...

  5. springmvc学习(五)——处理模型数据

    Spring MVC 提供了以下几种途径输出模型数据: ModelAndView: 处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据Map 及 Model: 入参 ...

  6. SpringMVC(九):SpringMVC 处理输出模型数据之ModelAndView

    Spring MVC提供了以下几种途径输出模型数据: 1)ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据: 2)Map及Model:处理方法 ...

  7. Spring MVC 处理模型数据(@ModelAttribute)

    SpringMVC中的模型数据是非常重要的,因为MVC中的控制(C)请求处理业务逻辑来生成数据模型(M),而视图(V)就是为了渲染数据模型的数据. 直白来讲,上面这句话的意思就是:当有一个查询的请求, ...

  8. SpringMvc:处理模型数据

    SpringMvc提供了以下途径输出模型数据: -ModelAndView:处理方法返回值类型为ModelAndView,方法体即可通过该对象添加模型数据 -Map或Model:入参为org.spri ...

  9. Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据

    Asp.Net MVC4.0 官方教程 入门指南之五--控制器访问模型数据 在这一节中,你将新创建一个新的 MoviesController类,并编写代码,实现获取影片数据和使用视图模板在浏览器中展现 ...

随机推荐

  1. Qt编写自定义控件33-图片切换动画

    一.前言 在很多看图软件中,切换图片的时候可以带上动画过渡或者切换效果,显得更人性化,其实主要还是炫一些,比如百叶窗.透明度变化.左下角飞入等,无论多少种效果,核心都是围绕QPainter来进行,将各 ...

  2. 【工具】sqlmap 中文手册 使用教程

    日期:2019-07-28 09:27:27 更新: 作者:Bay0net 介绍:自己翻译了一下,做个备忘. 0x01. 基本信息 官网 sqlmap: automatic SQL injection ...

  3. git clone https://chromium.googlesource.com/失败

    一.现象     连接着vpn,网页上可以直接打开网站,但是使用terminal 执行git clone https://chromium.googlesource.com/xxxx时,     报错 ...

  4. Hystrix-基本概念(设计原则和两种隔离技术)

    一.Hystrix是什么在微服务的架构系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务.有的时候某些依赖服务出现故障也是很正常的.Hystrix可以让我们在对服务间的调用进行控制 ...

  5. 读写Session

    读写Session Session是保存在服务端的字典 Session与Cookie有些类似,都是通过字典管理key-value对,只不过Cookie是保存在客户端的字典,而Session是保存在服务 ...

  6. MapReduce程序的开发过程

    1. 在linux(虚拟机环境)下安装hadoop2.8.3 1.1 安装JDK环境 1.2 安装hadoop 1.3 进行配置:core-site.xml,hdfs-site.xml设置 1.4 初 ...

  7. Leetcode之动态规划(DP)专题-647. 回文子串(Palindromic Substrings)

    Leetcode之动态规划(DP)专题-647. 回文子串(Palindromic Substrings) 给定一个字符串,你的任务是计算这个字符串中有多少个回文子串. 具有不同开始位置或结束位置的子 ...

  8. Git速成学习第三课:创建与合并分支

    本来第三课想记录一下远程仓库的创建与克隆0.0但是想了想还是不写了. 这里写一下分支管理中的创建与合并. Git速成学习笔记整理于廖雪峰老师的官网网站:https://www.liaoxuefeng. ...

  9. VC程序运行时间测试函数

    VC程序运行时间测试函数 介绍 我们在衡量一个函数运行时间,或者判断一个算法的时间效率,或者在程序中我们需要一个定时器,定时执行一个特定的操作,比如在多媒体中,比如在游戏中等,都会用到时间函数.还比如 ...

  10. golang的定时器NewTimer、NewTicker使用

    package main import ( "fmt" "sync" "time" ) /** *ticker只要定义完成,从此刻开始计时, ...