时间序列——R语言基础

news/2024/11/6 11:34:17/

这里只提及到了R语言的最皮毛的应用,其实ts是重点提及的,因为他是专门为了时间序列设计的内置class,但ts还是太浅显了,故一定要看以下链接。
zoo的使用
xts的使用
以上链接涉及到了zoo与xts,也是时间序列分析时的重要工具,有着极其强悍的作用。此外以上链接并未主要针对时间序列分析,还涉及到了数据清洗,数据处理等细节性处理,读者若想真正掌握,以上链接可仔细研读。

R 语言基础

R语言是一门常用于数据分析、统计建模的计算机语言,它与主流的C/C++、Java、Python等语言相比,支持更多的数据类型,例如向量、矩阵,同时提供了多种统计和数学计算方法。

可以前往 https://www.r-project.org/ 下载R语言解释器,并且推荐使用 RStudio 这个R语言的集成开发环境。RStudio 可以在 https://www.rstudio.com/ 下载。

四则运算

R语言的四则运算与大部分语言相同,使用 +​, -, *, /, ^ 来表示加、减、乘、除和乘方。数值可以写成 123, -123, 123.45, 1.23E-5这样的形式。其中1.23E-5表示 1.23 × 1 0 − 5 1.23 \times 10^{-5} 1.23×105

字符串

用单引号 ' 或双引号" 包裹起来的文字内容为字符串,如 'hello, world''123456'

向量

R 语言中可以通过 c(...) 来声明一个向量,例如 x = ( 1 , 2 , 3 , 4 , 5 ) \boldsymbol{x} = (1, 2, 3, 4, 5) x=(1,2,3,4,5) 可以通过 x <- c(1, 2, 3, 4, 5) 来声明。

对两个长度相等的向量进行四则运算的效果是向量中的每一个元素都与另一个向量中的每一个元素进行四则运算。而一个向量与一个数进行四则运算的效果是该向量中的所有元素都与这个数进行四则运算。如:

> x <- c(1, 2, 3, 4, 5)
> y <- c(1, 2, 3, 4, 5)
> x + y # 输出: [1] 2 4 6 8 10
> x + 1 # 输出: [1] 2 3 4 5 6

矩阵

R 语言中可以通过 matrix() 函数来创建矩阵。matrix() 的原型为 matrix(data=NA, nrow=1, ncol=1, byrow=FALSE, dinames=NULL) 其中:

  • data : 矩阵的元素,通常为向量。
  • nrowncol : 设定矩阵的行数和列数,一般只需设定其一,另一个会根据数据长度算出。
  • byrow : 设定矩阵的填充方式,值为 TRUE 时按行填充。默认为 FALSE ,即按列填充。

通过 matrix() 创建矩阵的例子如下:

> mat1 <- matrix(1:6, nrow=2) # 元素为1到6, 两行,按列填充
> mat1[,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6> mat2 <- matrix(1:6, nrow=2, byrow=TRUE)
> mat2[,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

此外还可以使用 dim() 通过向量来创建矩阵,例如:

> mat3 <- 1:6
> dim(mat3) <- c(3, 2) # 将元素为1到6变为3行2列的矩阵
> mat3[,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6

生成时间序列

通过 ts() 函数可以将一个向量或矩阵转成一个一元或多元的时间序列(ts)对象,ts() 函数的原型为:ts(data = NA, start = 1, end = numeric(0), frequency = 1, deltat = 1, ts.eps = getOption("ts.eps"), class, names)。其中:

  • data 要生成时间序列的向量或矩阵。
  • start 第一个观测值的时间。
  • end 最后一个观测值的时间。
  • frequency 单位时间内观测值的频数。
  • deltat 两个观测值之间的时间间隔。
  • ts.eps 序列之间的误差限。若序列之间的频率差异小于 ts.eps 则认为这些序列的频率相等。
  • class 对象的类型。一元序列默认为 ts,多元序列默认为 c("mts", "ts")
  • names 给出多元序列中每个一元序列的名称,默认为 Series 1, Series 2, ...

下面是一个例子:

> ts(1:26, start = 1986)
Time Series:
Start = 1986 
End = 2011 
Frequency = 1 [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17
[18] 18 19 20 21 22 23 24 25 26

画图

R 语言中可以直接使用 plot() 函数来绘制图像,例如:

> x <- rnorm(10)
> plot(x)
> x[1] -0.3329234  1.3631137 -0.4691473  0.8428756[5] -1.4579937 -0.4003059 -0.7764173 -0.3692965[9]  1.2401015 -0.1074338

在这里插入图片描述

还可以直接绘制时间序列的图像:

> plot(ts(x))

在这里插入图片描述

为了将多幅图画在一起,可以使用 par() 函数:

> op <- par(mfrow=c(2, 1), mar=c(5, 4, 2, 2) + .1) # mfrow 指定了图像矩阵为两行一列,即画两幅图,每行一幅;mar 指定了图像的边界,分别是下、左、上、右,可以根据喜好指定
> plot(ts(x))
> acf(z, main = "") # 计算 acf 函数

mfrow 指定了图像矩阵为两行一列,即画两幅图,每行一幅;mar 指定了图像的边界,分别是下、左、上、右,可以根据喜好指定

plot(ts(x))
acf(z, main = “”) # 计算 acf 函数
在这里插入图片描述

统计与时间序列分析基础

平均值

> y = array(1:20, dim=c(4, 5))
> y[,1] [,2] [,3] [,4] [,5]
[1,]   1    5    9    13   17
[2,]   2    6    10   14   18
[3,]   3    7    11   15   19
[4,]   4    8    12   16   20
> mean(y) # 对矩阵中的所有元素求平均值
[1] 10.5
> colMeans(y) # 计算每行的均值
[1] 2.5 6.5 10.5 14.5 18.5
> rowMeans(y) # 列均值
[1] 9 10 11 12

方差和标准差

> x = exp(seq(-1, 3, by=0.1)) # 从-1到3,步长为0.1
> x[1]  0.3678794  0.4065697  0.4493290  0.4965853[5]  0.5488116  0.6065307  0.6703200  0.7408182[9]  0.8187308  0.9048374  1.0000000  1.1051709
[13]  1.2214028  1.3498588  1.4918247  1.6487213
[17]  1.8221188  2.0137527  2.2255409  2.4596031
[21]  2.7182818  3.0041660  3.3201169  3.6692967
[25]  4.0552000  4.4816891  4.9530324  5.4739474
[29]  6.0496475  6.6858944  7.3890561  8.1661699
[33]  9.0250135  9.9741825 11.0231764 12.1824940
[37] 13.4637380 14.8797317 16.4446468 18.1741454
> var(x) # 计算方差
[1] 29.35325
> sd(x) # 计算标准差
[1] 5.417864

偏度和峰度

可以通过自己编写函数来计算偏度和峰度:

> skewness <- function(x) { sum(((x-mean(x)) ^ 3)) / length(x) } # 计算偏度
> skewnexx(x)
[1] 197.8397
> kurtosis <- function(x) {
+     a = mean(x)
+     n = length(x)
+     m4 = sum((x-a)^4)/n
+     m2 = sum((x-a)^2)/n
+     kurt = m4/m2^2-3
+     kurt
+ } # 计算峰度
> kurtosis(x)
[1] 0.6260693

也可以通过 moments 包中的 skewness 和 kurtosis 函数来计算偏度和峰度。

首先通过 > install.packages(moments) 来安装 moments 包,然后通过 > library(moments) 来使用这个包。之后就可以直接通过 skewness()kurtosis() 来计算偏度和峰度。

重要的概率分布

正态分布

通过 rnorm() 函数可以产生服从正态分布的随机数,rnorm() 函数的原型为 rnorm(n, mean=0, sd=1) ,其中 n 为生成数据个数,mean 为生成数据的均值,sd 为生成数据的标准差。例如:

> norm = rnorm(1000, 0, 1)
> mean(norm)
[1] 0.001165962
> sd(norm)
[1] 1.000664
> hist(norm, prob=TRUE, 30) # 绘制频率分布直方图
> curve(dnorm, add=TRUE) # 为直方图添加正态分布曲线

在这里插入图片描述

χ 2 \chi^2 χ2 分布

可以通过 rchisq(n, df) 来产生 n 个 服从自由度为 df 的 χ 2 \chi^2 χ2 分布的随机数

> rchisq(n=1000, df=20)
> hist(chi, prob=TRUE, 30)

在这里插入图片描述

t t t 分布

> t = rt(n=1000, df=5)
> hist(t, prob=TRUE, 30)

在这里插入图片描述

F F F 分布

> f = rf(n=1000, df1=10, df2=50)
> hist(f, prob=TRUE, 30)

在这里插入图片描述


http://www.ppmy.cn/news/166953.html

相关文章

R语言-频数统计函数

R如何对数据进行分组 1. factor()函数 > mtcars$cyl <- factor(mtcars$cyl) > mtcars$cyl[1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4 Levels: 4 6 82. cut()函数 > cut(mtcars$mpg,c(seq(10,50,10)))[1] (20,30] (20,30] (20,30] (2…

R 语言 单位根检验

单位根检验是一种平稳性检验,零假设是有单位根,即不平稳;对立假设是平稳。经常使用增强的 Dickey-Fuller 检 验 (ADF 检验)。 fUnitRoots 包的 adfTest() 函数可以执行单位根 ADF 检验。tseries 包的 adf.test() 函数也可以执行单位根 ADF 检验。 注意,ADF 检验都是在拒绝 …

R语言 创建矩阵的方式

> matrix(datac(1,2,3,4,5,6),nrow2,ncol3)[,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6> matrix(datac(1,2,3,4,5,6),nrow3,ncol2)[,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 1.以上功能实现&#xff1a;创建一个2行3列的矩阵&#xff1b;创…

R语言的列表

列表是R语言的对象集合&#xff0c;可以用来保存不同类型的数据&#xff0c;可以是数字、字符串、向量、另一个列表等&#xff0c;当然还可以包含矩阵和函数。 1.R语言创建列表使用list ()函数。 list_data <- list("hello","school",c(10,20,30),123,…

eXosip事件列表

事件列表 EvnetExplainmethodtypetranslateEXOSIP_REGISTRATION_SUCCESSuser is successfully registred.REGISTERResponse收到上级平台的 2xx 注册成功EXOSIP_REGISTRATION_FAILUREuser is not registred.REGISTERResponse收到上级平台的 3456xx 注册失败EXOSIP_CALL_INVITEa…

R 语言求最值问题

在工农业生产中,常常会遇到在一定条件下怎么使“产量最多”“用料最少”“成本最低”“效率最高”等问题,这类问题通常称为优化问题,在数学上有时可归结为求某函数(通常称为目标函数)的最大值或最小值问题。 某公司决定通过增加广告投入和技术改造投入来获得更大的收益。通…

R语言数据结构之数组

R 语言可以创建一维或多维数组。R 语言数组是一个同一类型的集合&#xff0c;矩阵 matrix 其实就是一个二维数组。 Usage array(data NA, dim length(data), dimnames NULL) 1. 数组创建 # 一维数组 a <- array(c(1:20)) # 二维数组 a <- array(c(1:30),dimc(6,5)…

R语言建立ARIMA模型预测数据

目录 确定研究目的以及确定因变量和自变量 数据预处理 判断有无缺失值 创建时间序列 平稳性检验 季节性处理 白噪声检验 模型选取与模型评估 最终模型与预测 结论 确定研究目的以及确定因变量和自变量 研究目的&#xff1a;建立ARIMA模型&#xff0c;预测接下来的 1…