使用Rstudio进行时间序列的预处理

  • 基础命令
  • 设置工作目录

setwd/getwd

usage:

getwd()

setwd()

  • 帮助

 help

usage:

help()

  • 安装与加载程序包

安装:install.packages      usage: install.packages("XX")

加载:library()              usage: library("XX")

  • 不同格式的数据获取

# .csv数据 

  1. Method One

install.packages("readxl")

library(readr)

flood1 <- read_csv("C:/Users/Administrator/Desktop/data/flood.csv")

  1. Method Two

flood2<-read.table("C:/Users/Administrator/Desktop/data/flood.csv", sep=",", header=T)

  1. Method Three

flood3<-read.csv("C:/Users/Administrator/Desktop/data/flood.csv", sep=",", header=T)

# .xlsx数据

#install.packages("readxl")

library(readxl)

data<read_excel("C:/Users/Administrator/Desktop/data/exp1/A1_4.xlsx")

#install.packages("openxlsx")

library(openxlsx)

data<- read.xlsx("C:/Users/Administrator/Desktop/data/A1_4.xlsx")

# .txt数据

data<-read.table("C:/Users/Administrator/Desktop/data/cpi.txt",header=F)

*. sep

指定制表分隔符。

txt格式中:

sep=”\t”——以制表符分隔。

sep=”,”——以逗号分隔。

*. Header指定第一行是否包括变量名。

  • plot函数
  1. 点线参数结构

plot函数中,使用参数type来控制点线输出结构。

  1. 符号参数

plot函数中,用pch选项(共25个)设置观察点的符号。

  1. 连线类型参数

plot函数中,用lty选项设置线的类型。

  1. 线的宽度参数

plot函数中,用lwd选项设置线的宽度。

  1. 颜色参数

plot函数中,用col选项设置线的颜色,等号后可以是具体的颜色,但要用双

引号括起来,也可以是某个数值,直接等出。

  1. 添加文本

plot函数中:

main选项添加标题文本;

sub选项添加副标题文本;

xlab选项添加横坐标名称;

ylab选项添加纵坐标名称。

  1. 制定坐标轴范围

plot函数中,用xlim选项添加横坐标的范围,用ylim选项添加纵坐标的范围。

EG.

plot(A1_15,xlim=c(1917,1927))

  1. 添加参照线

绘图时,使用abline函数为图形添加参照线条。

参照线条可以是垂线,也可以是水平线,还可以是线性回归线。

EG.

  • 保存命令过程

savehistory("XX")

  • 生成时间序列数据
  • 年度、季度、月度时间序列

输入命令:

name<-ts(data, start=,end=,frequency=

EG.

时间

CPI(上月=100)

时间

CPI(上月=100)

2020年1月

101.4

2020年7月

100.6

2020年2月

100.8

2020年8月

100.4

2020年3月

98.8

2020年9月

100.2

2020年4月

99.1

2020年10月

99.7

2020年5月

99.2

2020年11月

99.4

2020年6月

99.9

2020年12月

100.7

  1. 行输入(以1-3月为例)

cpi<-c(101.4,100.8,98.8)

cpi<-ts(cpi,start=c(2020,1),frequency=12)

cpi

  1. 列输入(以7-12月为例)

cpi<-scan()

#输入上一条代码后,输入所需数据,以回车结束录入数据。

cpi2<-ts(cpi,start=c(2020,7),frequency=12)

cpi2

  1. 读入外部数据

cpi3<-read.table("cpi.txt")

cpi3

cpii<-ts(cpi3, start=c(2020,1),frequency=12)

cpii

  • 以天为单位的时间序列
  1. 直接定义

EG.

t0<-ts(1:365,frequency=1,start=as.Date("2017-05-01"))

t0

s<-as.Date("2017-05-01")

date<-seq(from=s, by=1, length.out=365)

date

t<-data.frame(date, t0)

t

  1. 利用zoo包

EG.

t<-seq(as.Date("2017-05-01"),length=180,by="day")

z<-rnorm(180)*100

library(zoo)

xt<-zoo(z,t)

xt

  1. 以小时或分钟为单位的时间序列

使用strptime函数

EG.

t<-strptime("2017-05-01 00:00:00","%Y-%m-%d %H:%M:%S")+900*1:10 #900:900秒

t

#这句代码的意思是设置成以15分钟为间隔的10个时间序列

z<-rnorm(10)*100

z

library(zoo)

xt<-zoo(z,t)

xt

  • 用ts定义的时间序列数据的处理

EG. 使用在R中已安装的时间列示例数据:美国泛美航空公司1949-1960 的国际航班订票数的月度数据(单位:千人),共12年144个月。

data(AirPassengers)

AirPassengers

#start()求时间序列的开始点,end()求时间序列的结束点,frequency()求采样频率。

start(AirPassengers)

end(AirPassengers)

frequency(AirPassengers)

#aggregate()函数可以把月度数据加总成年度/季度数据。

airy<- aggregate (AirPassengers)

airy

airs<- aggregate (AirPassengers, nfrequency=4);

airs

airyw<-aggregate(airs, nfrequency = 1,FUN = weighted.mean, w = c(1, 1, 0.5, 1))

#window()函数取出时间序列的一段, 如果指定frequency=TRUE还可以仅取出某个月(季度)。

airw<-window(AirPassengers,start=c(1951,3),end=c(1959,8))

airw

airJan <- window(AirPassengers, start=c(1949,1), frequency=TRUE)

airJan

#log()进行序列的对数变换(默认底数为e)

lair<-log(AirPassengers)

lair

  • 数据可视化
  • 绘制时序图

EG. 北京地区从1949年到1964年的受灾面积与成灾面积(单位:万亩)数据。

#导入数据

flood<-read.csv("flood.csv",header=T)

flood

flarea1<-ts(flood$area1, start=1949, frequency=1)

flarea2<-ts(flood[,4], start=1949, frequency=1)

#默认格式输出

plot(flarea1,type="o")

#自定义图形参数(plot函数中):

#使用参数type设置点线输出结构。

#使用参数pch设置观察点的符号。

#使用参数lty设置线的类型。

#使用参数lwd设置线的宽度。

#使用参数col设置点线颜色。等号后面可以是具体的颜色,也可以是代表颜色的数值。

#添加文本。参数main添加标题,参数sub添加副标题,参数xlab指定横坐标名称,参数ylab指定纵坐标名称。

#参数xlim设置横坐标取值范围,参数ylim设置纵坐标取值范围。

#参数plot.type=“single”要求将全部图形画在同一张图中。

#其他辅助自定义函数:

#abline(v=,h=,lty=2)为图形添加参照线。可以是垂线、水平线、或线性回归线。

#par(mfrow=,mar=,mgp=)设置图形排列和边距等

#on.exit()调用自定义的par()

用于指定在当前函数退出时需要执行的表达式,无论函数时正常结束还是因错误终止,已注册的退出处理程序都会执行。

#legend()设置图例样式

*.通过par( )函数对图形参数进行设置后,当需要还原为系统默认设置时有两种方式可实现:

  1. 在调用par()函数设置图形参数之前先保存系统当前的环境,待需要还原时执行par(op)还原即可:

op <-par(no.readonly=TURE)  ##保存

…  ##执行其他命令

par(op)  ##还原

  1. 直接关闭图形对话框,下次重新打开时即为默认设置。
  • 绘制散点图

EG.

dataset <- read.csv("消费收入.csv",header=F)

xiaofei=dataset[,6]

shouru=dataset[,7]

plot(xiaofei,shouru,ylab ='收入',xlab='消费')

  • 绘制密度图

绘制密度图采用两步:

  1. 绘制直方图。
  2. 在途中添加概率密度曲线。

EG.

hist(return,freq = FALSE,xlab = '上证指数回报率',ylab='密度',ylim=c(0,45),xlim=c(-0.1,0.1),main='')

lines(density(return), col = "red")

  • 绘制季节图和极坐标图
  1. 季节图
  1. feasts包  *.feasts包要求将时间序列数据定义为tsibble格式

EG.

library(tsibble)

library(feasts)

pa2_tsbl<-as_tsibble(pa2)

gg_season(pa2_tsbl,labels="both")

gg_subseries(pa2_tsbl)

  1. forecast包  *. forecast包只需要将时间序列数据定义为ts格式。

EG.                    

library(forecast)

ggseasonplot(pa2,season.labels=NULL,year.labels=TRUE, year.labels.left = TRUE, main='', ylab="航空旅客量/万人", xlab="月份")

ggseasonplot(pa2, polar=TRUE, main='', ylab="航空旅客量/万人", xlab="月份")

  1. 极坐标图

forecast包

  • 白噪声模拟
  • 模拟的Poisson白噪声

EG.

set.seed(1)  #设置随机数种子

x <- rpois(100, 1)  #生成100个参数为1的分布为采用泊松分布的元素

plot(x, type="h", xlab="time", ylab="", main="Poisson White Noise")

  • 模拟的标准正态白噪声

EG.

set.seed(1)

x <- rnorm(100)

plot(x, type="l", xlab="time", ylab="", main="Gaussian White Noise")

  • 模拟的随机相位白噪声

EG.

set.seed(1)

x <- cos(2*pi/12*(1:100) + runif(100, 0, 2*pi))

plot(x, type="l", xlab="time", ylab="", main="Random Phase White Noise")

  • 自相关图

输入命令:

acf(x, lag.max=) #x为变量名;lag.max为延迟阶数

acf(x,plot=FALSE) #只计算,不绘制图形。

acf(x)$acf[1:6] #绘制图形,同时给出数值

#$:用于提取指定数值。

  • 偏相关图

输入命令:

pacf(x,lag.max=) #x:变量名;lag:延迟阶数

pacf(x)$acf[1:8] #绘制图形,同时给出数值。

  • 纯随机性(白噪声)检验

输入命令:

Box.test(x,lag=1,type=c("Box-Pierce", "Ljung-Box"))

EG.

library(readxl)

A1_7<- read_excel("A1_7.xlsx")

number<-ts(A1_7$number,start=1900)

number

Box.test(number,lag=6,type="Ljung-Box")

for(k in 1:2) print(Box.test(number,lag=6*k,type="Ljung-Box"))

#tout=matrix(ncol=3)(nocl:指定列数)

tout=NULL #tout用于存储检验结果的变量

for(k in c(3,6,9))

t<- Box.test(number,lag=k,type="Ljung")

      st1<-t$statistic

      st2<-t$p.value

      tout<-rbind(tout,c(k,st1,st2)) #按合并是数据


 一种特殊的文本格式,用以存储表格,且以逗号分隔。

 一种无固定格式的文本格式。

 mfrow:排列

mar:边距

     mar=c(bottom,left,top,right)

    (下、左、上、右)

mgp:标题、坐标轴标题、刻度标签的位置

      mgp=(outer,middle,inner)

      outer:控制标题距离图形的距离。

      middle:坐标轴标题距离坐标轴的距离

      inner:刻度标签距离坐标轴的距离。

 密度图:

通过平滑的曲线来表示数据的分布情况。

 gg_season():

来自ggfortify包,用于生成季节图。横坐标表示每个季节的时间。

 Gg_subseries:

来自ggfortify包,用于绘制时间序列的子序列。

 若用户不特殊指定,系统会根据序列长度自动指定延迟阶数,默认为10*log10(N/m)。

若用户不特殊指定延迟阶数,系统会根据序列长度自动指定延迟阶数,偏自相关图从1阶延迟开始。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值