U1
软件安装、数据输入、外部文件导入、变换、子集、插值、导出
> sum(1,2,3
+ )
[1] 6
> sum(1,2,3)
[1] 6
> x=1;y=2;x+y
[1] 3
> {x=1
+ y=2
+ x+y
+ }
[1] 3
> x<-3
> x
[1] 3
直接录入
#行输入
> price=c(101,82,66,35,31,7) #调用c函数
> price=ts(price,start=c(2005,1),frequency=12)
#变量命名为 price,start选项指定的起始读入时间
#frequency选项指定序列每年读入的数据频率
> price
Jan Feb Mar Apr May Jun
2005 101 82 66 35 31 7
#列输入
> price=scan() #调用scan函数
1: 101
2: 82
3: 66
4: 35
5: 31
6: 7
7:
Read 6 items
> price=ts(price,start=c(2005,1),frequency=12)
> price
Jan Feb Mar Apr May Jun
2005 101 82 66 35 31 7
外部数据文件转换
> x=read.table("E:/例题data/file1.csv",sep=",",header=T)
#sep指定制表分隔符,如果是txt格式,sep=“\t”,即文件以制表符分隔,如果是csv格式,sep=“,”,即以逗号分隔
#header指定第一行是否包含变量名,header=TURE(或简写为“T”)表示要转换的文本文件第一行包含变量名,这是系统指定的默认值,header=FALSE(或简写为“F”)表示改文件第一行不包含变量名
> x
Year yield
1 1884 15.2
2 1885 16.9
。。。
> x$yield #单独考察这两个变量的特征
[1] 15.2 16.9 15.3 14.9 15.7 15.1 16.7 16.3 16.5 13.3 16.5 15.0 15.9
[14] 15.5 16.9 16.4 14.9 14.5 16.6 15.1 14.6 16.0 16.8 16.8 15.5 17.3
[27] 15.5 15.5 14.2 15.8 15.7 14.1 14.8 14.4 15.6 13.9 14.7 14.3 14.0
[40] 14.5 15.4 15.3 16.0 16.4 17.2 17.8 14.4 15.0 16.0 16.8 16.9 16.6
[53] 16.2 14.0 18.1 17.5
>
数据变换
> y=log(x$yield)
> y
[1] 2.721295 2.827314 2.727853 2.701361 2.753661 2.714695 2.815409
[8] 2.791165 2.803360 2.587764 2.803360 2.708050 2.766319 2.740840
[15] 2.827314 2.797281 2.701361 2.674149 2.809403 2.714695 2.681022
[22] 2.772589 2.821379 2.821379 2.740840 2.850707 2.740840 2.740840
[29] 2.653242 2.760010 2.753661 2.646175 2.694627 2.667228 2.747271
[36] 2.631889 2.687847 2.660260 2.639057 2.674149 2.734368 2.727853
[43] 2.772589 2.797281 2.844909 2.879198 2.667228 2.708050 2.772589
[50] 2.821379 2.827314 2.809403 2.785011 2.639057 2.895912 2.862201
数据导出
> ln_yield=log(x$yield)
> x_new=data.frame(x,ln_yield)
> write.table(x_new,file="E:/例题data/file1.csv",sep=",",row.names=F)
U2
时序图
> yield=c(15.2,16.9,15.3,14.9,15.7,15.1,16.7)
> yield=ts(yield,start=1884)
> plot(yield)
点线结构参数
散点图
plot(yield,type="p")
点线图
plot(yield,type="o")
符号参数
> plot(yield,type="o",pch=17)
连线类型参数
> plot(yield,lty=2)
线的宽度参数
> plot(yield,lwd=2)
颜色参数
> plot(yield,col=3)
添加文本
> plot(yield,main="1884-1890年英格兰和威尔士地区小麦平均亩产量",xlab="年份",ylab="亩产量")
指定坐标轴范围
#指定输出横轴范围
> plot(yield,xlim=c(1886,1890))
#指定输出纵轴范围
> plot(yield,ylim=c(15,16))
添加参考线
#添加一条垂线
> plot(yield)
> abline(v=1887,lty=2)
#添加多条垂直参考线
> plot(yield)
> abline(v=c(1885,1889),lty=2)
#添加水平线
> plot(yield)
> abline(h=c(15.5,16.5),lty=2)
绘制自相关图
> acf(yield)
#acf(x,lag=) x:变量名;lag:延迟阶数,若用户不特殊指定的话,系统会根据序列长度自动指定延迟阶数
例2.1 时序图
> sha=read.table("E:/例题data/file4.csv",sep=",",header=T)
> output=ts(sha$output,start=1964)
> plot(output)
自相关图
> sha=read.table("E:/例题data/file4.csv",sep=",",header=T)
> output=ts(sha$output,start=1964)
> plot(output)
> acf(output,lag=25)
习题2.5
https://wenku.baidu.com/view/984cefabfab069dc50220176.html
第一题第二问matlab程序
>> clear all;close all;
>> X_t=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20];%时间序列值
>> k=6; %拟计算的自相关延迟期数值
>> rou_hat=zeros(k,1); %为拟计算的中阶自相关系数预留数组空间
>> Time_mean=mean(X_t); %计算时间序列值的样本均值
>>
>> %计算自相关系数计算公式的分母部分
>> SST=0;
>> for t=1:20
SST=SST+(X_t(t)-Time_mean)^2;
end
>>
>> %计算对应k阶自相关系数
>> for i=1:k
S=0;
for t=1:20-i
S=S+(X_t(t)-Time_mean)*(X_t(t+i)-Time_mean);%计算公式分子部分
end
rou_hat(i,1)=S/SST;
end
>> rou_hat=rou_hat %输出相关系数值
rou_hat =
0.8500
0.7015
0.5560
0.4150
0.2801
0.1526
U3
eg:3-1 观察如下四个AR模型的平稳性
> x1<-arima.sim(n=100,list(ar=0.8))
> e<-rnorm(100)
> ts.plot(x1)
> x2<-filter(e,filter=-1.1,method="recursive")
> e<-rnorm(100)
> ts.plot(x2)
> x3<-arima.sim(n=100,list(ar=c(1,-0.5)))
> ts.plot(x3)
> x4<-filter(e,filter=c(1,0.5),method="recursive")
> ts.plot(x4)
> x1<-arima.sim(n=100,list(ar=-1.1))
Error in arima.sim(n = 100, list(ar = -1.1)) : 模型的'ar'部分不平穩
> x3<-arima.sim(n=100,list(ar=c(1,0.5)))
Error in arima.sim(n = 100, list(ar = c(1, 0.5))) : 模型的'ar'部分不平穩
笔记:https://zhuanlan.zhihu.com/p/25713408
rnorm函数:https://blog.csdn.net/OYY_90/article/details/82226334
arima.sim()函数:https://www.jianshu.com/p/5691621e4ac5