R语言 非平稳序列的随机分析
- 格式:pptx
- 大小:1.69 MB
- 文档页数:118
第四十二课 非平稳序列的随机分析20世纪70年代,G. P. Box 和G. M. Jenkins 发表了专著《时间序列分析:预测和控制》,对平稳时间序列数据,提出了自回归滑动平均模型ARIMA ,以及一整套的建模、估计、检验和控制方法。
使时间序列分析广泛地运用成为可能。
为了纪念Box 和Jenkins 对时间序列发展的特殊贡献,现在人们也常把ARIMA 模型称为Box-Jenkins 模型。
当我们拟合一个时间序列时,先通过差分法或适当的变换使非平稳序列化成为平稳序列,我们再要考虑的是参数化和记忆特征的有效性,用这种参数方法拟合序列为某种特定的结构,只用很少量的参数,使参数的有效估计成为可能。
相对于一个序列的过去值,可用传统的Box 和Jenkins 方法建模。
实际上,Box-Jenkins 模型主要是运用于单变量、同方差场合的线性模型。
随着对时间序列应用的深入研究,发现还存在着许多局限性。
所以近20年来,统计学家纷纷转向多变量、异方差和非线性场合的时间序列分析方法的研究,并取得突破性的进展,其中Engle 和Granger 一起获得2003年诺贝尔经济学奖。
在异方差场合,Robert F.Engle 在1982年提出了自回归条件异方差ARCH 模型,以及在ARCH 模型上衍生出的一系列拓展模型。
在多变量场合,70年代末,G. E. P. Box 教授和刁锦寰教授在处理洛山矶的环境数据时,提出了干预分析和异常值检验方法。
1987年,C.Granger 提出了协整(co-integration )理论,在多变量时间序列建模过程中“变量是平稳的”不再是必须条件了,而只要求它们的某种组合是平稳的。
非线性时间序列分析也有重大发展,汤家豪教授等在1980年左右提出了利用分段线性化构造门限自回归模型。
一、 ARIMA 模型随着对时间序列分析方法的深入研究,人们发现非平稳序列的确定性因素分解方法(如季节模型、趋势模型、移动平均、指数平滑等)存在一些问题,它只能提取显著的确定性信息,对随机性信息浪费严重,同时也无法对确定性因素之间的关系进行分析。
解决R语⾔数据不平衡的问题R语⾔解决数据不平衡问题⼀、项⽬环境开发⼯具:RStudioR:3.5.2相关包:dplyr、ROSE、DMwR⼆、什么是数据不平衡?为什么要处理数据不平衡?⾸先我们要知道的第⼀个问题就是“什么是数据不平衡”,从字⾯意思上进⾏解释就是数据分布不均匀。
在我们做有监督学习的时候,数据中有⼀个类的⽐例远⼤于其他类,或者有⼀个类的⽐值远⼩于其他类时,我们就可以认为这个数据存在数据不平衡问题。
那么这样的⼀个问题会对我们后续的分析⼯作带来怎样的影响呢?我举个简单的例⼦,或许⼤家就明⽩了。
假设我们现在需要训练⼀个模型来分辨⼈群中那个⼈是恐怖分⼦。
那么现在给到我们1万个⼈员的数据,在做分析之前其实我们就很清楚,⼀群⼈中恐怖分⼦的⽐例肯定是要远⼩于普通⼈的⽐例的。
那么假如在这1万个⼈中只有⼀个是恐怖分⼦,那么恐怖分⼦与正常⼈的⽐例就是 9999 : 1 。
那么如果我们不进⾏任何处理就直接进⾏有监督学习的话,那么模型只需要将所有⼈数据都分类为正常⼈,模型的准确率就能达到99.99%。
⽽这样的模型显然是没有意义的。
因为基本上说有可能存在的恐怖分⼦的特征基本都被模型给忽略了,这也就说明了为什么要处理数据不平衡问题。
三、常见的数据不平衡处理⽅法以下是⼏种⽐较常见的处理数据不平衡的⽅法:1、⽋采样法(Undersampling)2、过采样法(Oversampling)3、⼈⼯数据合成法(Synthetic Data Generation)4、代价敏感学习法(Cose Sensitive Learning)【注】:本⽂主要以实现为主,因此不对上述⽅法进⾏过多的讲解。
在处理数据之前,我们先看⼀下需要处理的数据分布的情况。
load("C:/Users/User/Desktop/data.RData")table(data$classification)prop.table(table(data$classification))> table(data$classification)-8 1 2 3 4 512 104 497 1158 4817 1410> prop.table(table(data$classification))-8 1 2 3 4 50.001500375 0.013003251 0.062140535 0.144786197 0.602275569 0.1762940741、⽋采样######### ⽅法⼀ #########library(ROSE)# 由于是多分类问题,我们先提取数据中⽐例最⼤的类和⽐例最⼩的类# 进⾏平衡(转化为⼆分类问题)test <- data[which(data$classification == -8 | data$classification == 4),]# 将分类结果转化为因⼦型(不然会报错)test$classification <- as.factor(test$classification)# 进⾏⽋采样# 其中 method = "under" 表⽰采⽤的⽅法为“⽋采样”# N = 40 表⽰最终整个数据集的数量# seed 随机种⼦,为了保留对样本的追踪under <- ovun.sample(classification ~ ., test, method = "under", N = 40, seed = 1)$data # 查看结果table(under$classification)> table(under$classification)4 -828 12######### ⽅法⼆ #########library(dplyr)# 由于是多分类问题,我们先提取数据中⽐例最⼤的类和⽐例最⼩的类# 进⾏平衡(转化为⼆分类问题)test <- data[which(data$classification == -8 | data$classification == 4),]# 提取⼤⽐例类test1 <- test[which(test$classification == 4),]# 将⼤⽐例类的数量降为12个down <- sample_n(test1, 12, replace = TRUE)# 将⽋采样后的类进⾏合并down <- rbind(test[which(test$classification == -8), ],down)table(down$classification)> table(down$classification)-8 412 12【注】:⽋采样是⽆放回的采样。
图(1)考虑对该序列进行1阶差分运算,同时考察差分序列的平稳性,在原程序基础上添加相关命令,程序修改如下:图(2)时序图显示差分后序列difx没有明显的非平稳特征。
(2)“identify var=x(1);”,使用该命令可以识别差分后序列的平稳性。
纯随机性和适当的拟合图(6)普通最小二乘估计结果图(8)最终拟合模型输出结果图(9)拟合效果图图(12)带有延迟因变量的回归模型拟合效果图5.8.3拟合GARCH模型SAS系统中AUTOREG过程功能非常强大,不仅可以提供上述的分析功能,还可以提供异方差性检验乃至条件异方差模型建模。
以临时数据集example5_3数据为例,介绍GARCH模型的拟合,相关命令如下:data example5_3;input x@@;t=_n_;cards;10.77 13.30 16.64 19.54 18.97 20.52 24.3623.51 27.16 30.80 31.84 31.63 32.68 34.9033.85 33.09 35.46 35.32 39.94 37.47 35.2433.03 32.67 35.20 32.36 32.34 38.45 38.1732.14 39.70 49.42 47.86 48.34 62.50 63.5667.61 64.59 66.17 67.50 76.12 79.31 78.8581.34 87.06 86.41 93.20 82.95 72.96 61.1061.27 71.58 88.34 98.70 97.31 97.17 91.1780.20 85.12 81.40 70.87 57.75 52.35 67.5087.95 85.46 84.55 98.16 102.42 113.02 119.95122.37 126.96 122.79 127.96 139.20 141.05 140.87137.08 145.53 145.59 134.36 122.54 106.92 97.23110.39 132.40 152.30 154.91 152.69 162.67 160.31142.57 146.54 153.83 141.81 157.83 161.79 142.07139.43 140.92 154.61 172.33 191.78 199.27 197.57189.29 181.49 166.84 154.28 150.12 165.17 170.32;proc gplot data=example5_3;plot x*t=1;symbol1c=black i=join v=start;proc autoreg data=example5_3;model x=t/nlag=5dwprob archtest;model x=t/nlag=2noint garch=(p=1,q=1);output out=out p=p residual=residual lcl=lcl ucl=ucl cev=cev;data out;set out;l95=-1.96*sqrt(51.42515);u95=1.96*sqrt(51.42515);Lcl_GARCH=-1.96*sqrt(cev);Ucl_GARCH=1.96*sqrt(cev);Lcl_p=p-1.96*sqrt(cev);Ucl_p=p+1.96*sqrt(cev);proc gplot data=out;plot residual*t=2 l95*t=3 Lcl_GARCH*t=4 u95*t=3 Ucl_GARCH*t=4/overlay; plot x*t=5 lcl*t=3 LCL_p*t=4 ucl*t=3 UCL_p*t=4/overlay;symbol2c=green i=needle v=none;symbol3v=black i=join c=none w=2l=2;symbol4c=red i=join v=none;symbol5c=green i=join v=none;run;该序列输出时序图如图(13)所示。
《时间序列分析及应用:R语言》读书笔记姓名:石晓雨学号:1613152019(一)、时间序列研究目的主要有两个:认识产生观测序列的随机机制,即建立数据生成模型;基于序列的历史数据,也许还要考虑其他相关序列或者因素,对序列未来的可能取值给出预测或者预报。
通常我们不能假定观测值独立取自同一总体,时间序列分析的要点是研究具有相关性质的模型。
(二)、下面是书上的几个例子1、洛杉矶年降水量问题:用前一年的降水量预测下一年的降水量。
第一幅图是降水量随时间的变化图;第二幅图是当年降水量与去年降水量散点图。
win.graph(width=4.875, height=2.5,pointsize=8) #这里可以独立弹出窗口data(larain) #TSA包中的数据集,洛杉矶年降水量plot(larain,ylab='Inches',xlab='Year',type = 'o') #type规定了在每个点处标记一下win.graph(width = 3,height = 3,pointsize = 8)plot(y = larain,x = zlag(larain),ylab = 'Inches',xlab = 'Previous Year Inches')#zlag 函数(TSA包)用来计算一个向量的延迟,默认为1,首项为NA从第二幅图看出,前一年的降水量与下一年并没有什么特殊关系。
2、化工过程win.graph(width = 4.875,height = 2.5,pointsize = 8)data(color)plot(color,ylab = 'Color Property',xlab = 'Batch',type = 'o')win.graph(width = 3,height = 3,pointsize = 8)plot(y = color,x = zlag(color),ylab = 'Color Property',xlab = 'Previous Batch Color Property')len <- length(color)cor(color[2:len],zlag(color)[2:len])#相关系数>0.5549第一幅图是颜色属性随着批次的变化情况。
用R语言实现对不平衡数据的四种处理方法在对不平衡的分类数据集进行建模时,机器学习算法可能并不稳定,其预测结果甚至可能是有偏的,而预测精度此时也变得带有误导性。
那么,这种结果是为何发生的呢?到底是什么因素影响了这些算法的表现?在不平衡的数据中,任一算法都没法从样本量少的类中获取足够的信息来进行精确预测。
因此,机器学习算法常常被要求应用在平衡数据集上。
那我们该如何处理不平衡数据集?本文会介绍一些相关方法,它们并不复杂只是技巧性比较强。
本文会介绍处理非平衡分类数据集的一些要点,并主要集中于非平衡二分类问题的处理。
一如既往,我会尽量精简地叙述,在文末我会演示如何用R中的ROSE包来解决实际问题。
什么是不平衡分类不平衡分类是一种有监督学习,但它处理的对象中有一个类所占的比例远远大于其余类。
比起多分类,这一问题在二分类中更为常见。
(注:下文中占比较大的类称为大类,占比较小的类称为小类)不平衡一词指代数据中响应变量(被解释变量)的分布不均衡,如果一个数据集的响应变量在不同类上的分布差别较大我们就认为它不平衡。
举个例子,假设我们有一个观测数为100000的数据集,它包含了哈佛大学申请人的信息。
众所周知,哈佛大学以极低的录取比例而闻名,那么这个数据集的响应变量(即:该申请人是否被录取,是为1,否为0)就很不平衡,大致98%的观测响应变量为0,只有2%的幸运儿被录取。
在现实生活中,这类例子更是不胜枚举,我在下面列举了一些实例,请注意他们的不平衡度是不一样的。
1.一个自动产品质量检测机每天会检测工厂生产的产品,你会发现次品率是远远低于合格率的。
2.某地区进行了居民癌症普查,结果患有癌症的居民人数也是远远少于健康人群。
3.在信用卡欺诈数据中,违规交易数比合规交易少不少。
4.一个遵循6δ原则的生产车间每生产100万个产品才会产出10个次品。
生活中的例子还有太多,现在你可以发现获取这些非平衡数据的可能性有多大,所以掌握这些数据集的处理方法也是每个数据分析师的必修课。
第五章非平稳时间序列随机性分析实验报告下表为1948-1981年美国女性(大于20岁)月度失业率数据表5-1 1948-1981 年美国女性月度失业率1月2月3月4月5月6月7月8月9月10月11月12月1948 446 650 592 561 491 592 604 635 580 510 553 554 1949 628 708 629 724 820 865 1007 1025 955 889 965 878 1950 1103 1092 978 823 827 928 838 720 756 658 838 684 1951 779 754 794 681 658 644 622 588 720 670 746 616 1952 646 678 552 560 578 514 541 576 522 530 564 442 1953 520 484 538 454 404 424 432 458 556 506 633 708 1954 1013 1031 1101 1061 1048 1005 987 1006 1075 854 1008 777 1955 982 894 795 799 781 776 761 839 842 811 843 753 1956 848 756 848 828 857 838 986 847 801 739 865 767 1957 941 846 768 709 798 831 833 798 806 771 951 799 1958 1156 1332 1276 1373 1325 1326 1314 1343 1225 1133 1075 1023 1959 1266 1237 1180 1046 1010 1010 1046 985 971 1037 1026 947 1960 1097 1018 1054 978 955 1067 1132 1092 1019 1110 1262 1174 1961 1391 1533 1479 1411 1370 1486 1451 1309 1316 1319 1233 1113 1962 1363 1245 1205 1084 1048 1131 1138 1271 1244 1139 1205 1030 1963 1300 1319 1198 1147 1140 1216 1200 1271 1254 1203 1272 1073 1964 1375 1400 1322 1214 1096 1198 1132 1193 1163 1120 1164 966 1965 1154 1306 1123 1033 940 1151 1013 1105 1011 963 1040 838 1966 1012 963 888 840 880 939 868 1001 956 966 896 843 1967 1180 1103 1044 972 897 1103 1056 1055 1287 1231 1076 929 1968 1105 1127 988 903 845 1020 994 1036 1050 977 956 818 1969 1031 1061 964 967 867 1058 987 1119 1202 1097 994 840 1970 1086 1238 1264 1171 1206 1303 1393 1463 1601 1495 1561 1404 1971 1705 1739 1667 1599 1516 1625 1629 1809 1831 1665 1659 1457 1972 1707 1607 1616 1522 1585 1657 1717 1789 1814 1698 1481 1330 1973 1646 1596 1496 1386 1302 1524 1547 1632 1668 1421 1475 1396 1974 1706 1715 1586 1477 1500 1648 1745 1856 2067 1856 2104 2061 1975 2809 2783 2748 2642 2628 2714 2699 2776 2795 2673 2558 2394 1976 2784 2751 2521 2372 2202 2469 2686 2815 2831 2661 2590 2383 1977 2670 2771 2628 2381 2224 2556 2512 2690 2726 2493 2544 2232 1978 2494 2315 2217 2100 2116 2319 2491 2432 2470 2191 2241 2117 1979 2370 2392 2255 2077 2047 2255 2233 2539 2394 2341 2231 2171 1980 2487 2449 2300 2387 2474 2667 2791 2904 2737 2849 2723 2613 1981 2950 2825 2717 2593 2703 2836 2938 2975 3064 3092 3063 2991 数据来源:Andrews&Herzberg(1985)。
实验五非平稳序列的随机分析一、实验目的:利用arima,autoreg,进行非平稳序列的随机性分析。
对arima 模型,auto-regressive模型及garch模型进行拟合并分析结果。
二、实验内容习题1data example3_1;input x@@;t=_n_;cards;304 303 307 299 296 293 301 293 301 295 284 286 286 287 284282 278 281 278 277 279 278 270 268 272 273 279 279 280 275271 277 278 279 283 284 282 283 279 280 280 279 278 283 278270 275 273 273 272 275 273 273 272 273 272 273 271 272 271273 277 274 274 272 280 282 292 295 295 294 290 291 288 288290 293 288 289 291 293 293 290 288 287 289 292 288 288 285282 286 286 287 284 283 286 282 287 286 287 292 292 294 291288 289;proc gplot data=example3_1;plot x*time=1;symbol v=star c=black i=join;run;得到的时序图如下:由时序图可知,该序列不平稳,是一个非平稳序列。
而差分运算的实质是使用自回归方式提取确定性信息,因此用1阶差分对序列的信息提取,输入如下程序:proc gplot ; plot difx*t;symbol v =star c =black i =join; proc arima ;identify var =x(1) minic p =(0:5) q =(0:5); run ;且data 中输入difx=dif(x); 得到一阶差分时序图如下:x -20-1010time102030405060708090100110该时序图没有明显的非平稳特征。
非平稳时间序列分析1、首先画出时序图如下:t从时序图中看出有明显的递增趋势,而该序列是一直递增,不随季节波动,所以认为该序列不存在季节特征。
故对原序列做一阶差分,画出一阶差分后的时序图如下:difx140 130 120 110 100 90 80 70 60 50 40 30 20 10 0 -10从中可以看到一阶差分后序列仍然带有明显的增长趋势,再做二阶差分:80 - 70 - 60 - 50 - 40 - 30 - 20 - 10 - 0 - -10 - -20 - -30 - -40 - -50 --60 - -70 - -80 - -90 - -100 - -110 -做完二阶差分可以看到,数据的趋势已经消除,接下来对二阶差分后的序列进行19451950dif2x90 - 1945195519601965197019751980198519901995200019501955196019651970197519801985199019952000*检验:AutocorrelationsLag Covariance Correlation -1 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 1 Std Error0 577.333 1.00000 | |********************| 01 -209.345 -.36261 | *******| . | 0.0712472 -52.915660 -.09166 | .**| . | 0.0800693 9.139195 0.01583 | . | . | 0.0806004 15.375892 0.02663 . |* . | 0.0806155 -59.441547 -.10296 .**| . | 0.0806606 -23.834489 -.04128 | . *| . | 0.0813247 100.285 0.17370 | . |*** | 0.0814318 -146.329 -.25346 | *****| . | 0.0832909 52.228658 0.09047 | . |**. | 0.08711810 21.008575 0.03639 | . |* . | 0.08759311 134.018 0.23213 | . |***** | 0.08767012 -181.531 -.31443 | ******| . | 0.09073613 23.268470 0.04030 | . |* . | 0.09610814 71.112195 0.12317 | . |** . | 0.09619415 -105.621 -.18295 | ****| . | 0.09699116 37.591996 0.06511 . |* . | 0.09872717 23.031506 0.03989 | . |* . | 0.09894518 45.654745 0.07908 | . |** . | 0.09902719 -101.320 -.17550 | ****| . | 0.09934720 127.607 0.22103 | . |**** | 0.10090821 -61.519663 -.10656 | . **| . | 0.10333722 35.825317 0.06205 | . |* . | 0.10389323 -93.627333 -.16217 | .***| . | 0.10408124 55.451208 0.09605 | . |** . |从其自相关图中可以看出二阶差分后的序列自相关系数很快衰减为零,且都在两倍标准差范围之内,所以认为平稳,白噪声检验结果:Autocorrelation Check for White NoiseTo Chi- Pr >Lag Square DF ChiSq------------------- Autocorrelations -------------------6 30.70 6 <.0001 -0.363 -0.092 0.016 0.027 -0.103 -0.04112 84.54 12 <.0001 0.174 -0.253 0.090 0.036 0.232 -0.31418 97.98 18 <.0001 0.040 0.123 -0.183 0.065 0.040 0.07924 126.99 24 <.0001 -0.175 0.221 -0.107 0.062 -0.162 0.096P 值都小于 0.05 ,认为不是白噪声。