股价波动的主要原因是股票的供求关系的变化。而使股票的供求关系发生变化的因素,主要来自于以下几个方面:影响股价变动的国内外政治活动以及政府对股市发展的政策、措施、法令等的制定和变化的政治性因素、物价波动与经济景气循环的经济性因素、利率和汇率变化引起的财政金融性因素、公司经营状况变动而造成的公司性因素和因为市场消息导向而形成的市场性因素。这么多的因素变化均能导致股价的波动,或是轻微或是强烈。本文将重点研究市场消息对股价的影响变化程度,在这之前,我们需要能够知道到底哪些市场消息是有效的,哪些无效的。
为了回答这个问题,需要遍历每个变量并将其都与股价的波动进行相关性分析。在数据集足够大并且计算力足够的情况下不失为一个好办法,但是本文在此希望能够运用小量数据集来推测出股价与特定市场消息的相关性。因此本文将会先以“贵州茅台”这支股价的每日的收盘价为例,将其与“茅台”,“茅台酒”,“茅台股价”和“贵州茅台”这四个关键词的对应当日的百度指数进行相关性分析。由此来找出在这样一个特定的范围中,与股价收盘价最具相关性的因素。
对于变量的选择,因为在这里本文将要运用的是Pearson(Pearson相关系数)来进行相关性分析,所以要选择适用于该方法的变量,即符合连续分布或正态分布的变量。而且这个变量又要与股价收盘价这项数据相互独立。因此,本文的自变量将会选择百度指数这个数据分析平台上的数据,它既是符合Pearson要求的连续型变量,其分布当然也是遵循正态分布。 至于为何会选择贵州茅台这一支股票呢?原因是贵州茅台是最近的一支牛股,其股价的波动很大并且与其相关的搜索热度很高,其关键词的数据也极为丰富,所以在百度指数上的关键词波动相对于其他的股票的波动较为显著,这更有利于进行相关性分析。 作为本文因变量的贵州茅台的股价数据来源于Tushare,Tushare是一个开放的,免费的平台,不带任何商业性质和目的的开源数据平台,其数据内容包含股票、基金、期货、债券、外汇、行业大数据,同时包括了数字货币行情等区块链数据的全数据品类的金融大数据平台,为各类金融投资和研究人员提供适用的数据和工具。作为自变量的关键词:“茅台”、“茅台酒”、“茅台股价”和“贵州茅台”的指数来源于百度指数,百度指数是以百度海量网民行为数据为基础的数据分享平台。在这里,你可以研究关键词关注趋势、洞察网民需求变化、监测媒体舆情趋势、定位数字消费者特征。还可以从行业视角,分析市场特点、洞悉品牌表现。股价数据在Tushare提供的R语言接口中已经整理规范(来张图表),从下图可以看到因为股票的收盘价对应的日期只有周一到周五,而整理出来的百度指数的日期则是每日变化,所以本文利用基姆拉尔森计算公式计算出该百度指数的日期是否是周末,如果是周末则在百度指数的数据框中剔除,以此来保证能够对齐数据,从而方便进行接下来的数据分析。
#通过Tushare获取贵州茅台的股价数据
#获取数据并保存至csv文件
#bar <- Tushare::pro_bar(token = '33a2b0bb445664f8c29f0a921587c9101b3ab50622fbbdf0768abaa2')
#a <- bar(ts_code = "600519.SH", start_date = "20190927", end_date = "20191226")
#write.csv(a,file="stocks.csv")
#从文档中读取数据
#读取茅台的收盘价股价
maotai <- read.csv("stocks.csv",stringsAsFactors = TRUE)
knitr::kable(maotai)
X | ts_code | trade_date | open | high | low | close | pre_close | change | pct_chg | vol | amount |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 600519.SH | 20191226 | 1132.00 | 1141.98 | 1119.99 | 1135.10 | 1133.70 | 1.40 | 0.1235 | 22877.27 | 2585997 |
2 | 600519.SH | 20191225 | 1143.00 | 1143.00 | 1130.01 | 1133.70 | 1148.00 | -14.30 | -1.2456 | 24305.97 | 2755735 |
3 | 600519.SH | 20191224 | 1153.00 | 1155.00 | 1145.00 | 1148.00 | 1149.30 | -1.30 | -0.1131 | 11823.10 | 1358536 |
4 | 600519.SH | 20191223 | 1139.00 | 1162.50 | 1136.00 | 1149.30 | 1146.30 | 3.00 | 0.2617 | 25919.18 | 2981938 |
5 | 600519.SH | 20191220 | 1162.18 | 1162.18 | 1141.50 | 1146.30 | 1157.40 | -11.10 | -0.9590 | 23563.84 | 2703612 |
6 | 600519.SH | 20191219 | 1163.00 | 1163.00 | 1152.00 | 1157.40 | 1168.00 | -10.60 | -0.9075 | 19552.30 | 2262599 |
7 | 600519.SH | 20191218 | 1174.00 | 1175.20 | 1164.00 | 1168.00 | 1169.98 | -1.98 | -0.1692 | 19640.09 | 2295964 |
8 | 600519.SH | 20191217 | 1149.70 | 1173.60 | 1143.03 | 1169.98 | 1147.92 | 22.06 | 1.9217 | 42616.96 | 4937042 |
9 | 600519.SH | 20191216 | 1163.00 | 1163.00 | 1137.94 | 1147.92 | 1163.00 | -15.08 | -1.2966 | 30936.42 | 3554134 |
10 | 600519.SH | 20191213 | 1146.00 | 1165.00 | 1146.00 | 1163.00 | 1137.00 | 26.00 | 2.2867 | 30000.59 | 3473928 |
11 | 600519.SH | 20191212 | 1156.00 | 1159.94 | 1130.08 | 1137.00 | 1158.98 | -21.98 | -1.8965 | 29409.16 | 3362700 |
12 | 600519.SH | 20191211 | 1168.00 | 1170.75 | 1155.55 | 1158.98 | 1164.40 | -5.42 | -0.4655 | 14567.99 | 1689988 |
13 | 600519.SH | 20191210 | 1159.60 | 1165.00 | 1151.00 | 1164.40 | 1158.70 | 5.70 | 0.4919 | 15086.58 | 1749356 |
14 | 600519.SH | 20191209 | 1175.00 | 1176.00 | 1156.10 | 1158.70 | 1170.00 | -11.30 | -0.9658 | 21824.12 | 2543533 |
15 | 600519.SH | 20191206 | 1135.97 | 1170.00 | 1130.10 | 1170.00 | 1129.80 | 40.20 | 3.5582 | 39506.26 | 4565644 |
16 | 600519.SH | 20191205 | 1125.00 | 1132.01 | 1118.00 | 1129.80 | 1122.33 | 7.47 | 0.6656 | 21338.79 | 2402503 |
17 | 600519.SH | 20191204 | 1140.00 | 1144.66 | 1118.00 | 1122.33 | 1118.00 | 4.33 | 0.3873 | 35283.08 | 3980511 |
18 | 600519.SH | 20191203 | 1133.00 | 1133.00 | 1117.74 | 1118.00 | 1133.00 | -15.00 | -1.3239 | 27340.93 | 3066696 |
19 | 600519.SH | 20191202 | 1118.20 | 1140.02 | 1118.20 | 1133.00 | 1129.00 | 4.00 | 0.3543 | 30784.41 | 3479717 |
20 | 600519.SH | 20191129 | 1165.50 | 1165.50 | 1112.89 | 1129.00 | 1175.80 | -46.80 | -3.9803 | 82397.32 | 9338327 |
21 | 600519.SH | 20191128 | 1194.97 | 1197.51 | 1169.02 | 1175.80 | 1189.95 | -14.15 | -1.1891 | 28844.99 | 3405326 |
22 | 600519.SH | 20191127 | 1192.80 | 1196.62 | 1184.51 | 1189.95 | 1185.00 | 4.95 | 0.4177 | 19848.81 | 2363840 |
23 | 600519.SH | 20191126 | 1186.68 | 1198.60 | 1183.00 | 1185.00 | 1182.06 | 2.94 | 0.2487 | 40239.61 | 4794180 |
24 | 600519.SH | 20191125 | 1188.05 | 1194.00 | 1172.06 | 1182.06 | 1194.00 | -11.94 | -1.0000 | 38281.75 | 4518779 |
25 | 600519.SH | 20191122 | 1223.00 | 1229.00 | 1185.00 | 1194.00 | 1231.30 | -37.30 | -3.0293 | 47054.28 | 5677646 |
26 | 600519.SH | 20191121 | 1231.00 | 1235.51 | 1221.06 | 1231.30 | 1233.75 | -2.45 | -0.1986 | 19187.39 | 2356278 |
27 | 600519.SH | 20191120 | 1230.00 | 1239.51 | 1228.06 | 1233.75 | 1232.32 | 1.43 | 0.1160 | 15280.53 | 1884957 |
28 | 600519.SH | 20191119 | 1228.00 | 1241.61 | 1225.02 | 1232.32 | 1227.28 | 5.04 | 0.4107 | 20623.75 | 2542106 |
29 | 600519.SH | 20191118 | 1225.12 | 1229.45 | 1218.00 | 1227.28 | 1224.90 | 2.38 | 0.1943 | 18037.66 | 2204546 |
30 | 600519.SH | 20191115 | 1230.00 | 1232.91 | 1221.50 | 1224.90 | 1230.00 | -5.10 | -0.4146 | 16340.72 | 2003665 |
31 | 600519.SH | 20191114 | 1227.00 | 1240.00 | 1222.00 | 1230.00 | 1224.00 | 6.00 | 0.4902 | 23521.12 | 2898400 |
32 | 600519.SH | 20191113 | 1207.00 | 1227.80 | 1200.00 | 1224.00 | 1201.60 | 22.40 | 1.8642 | 31977.04 | 3890667 |
33 | 600519.SH | 20191112 | 1204.00 | 1209.60 | 1198.21 | 1201.60 | 1199.00 | 2.60 | 0.2168 | 19150.55 | 2303206 |
34 | 600519.SH | 20191111 | 1201.50 | 1206.20 | 1193.51 | 1199.00 | 1205.00 | -6.00 | -0.4979 | 17342.46 | 2082061 |
35 | 600519.SH | 20191108 | 1205.00 | 1215.65 | 1201.51 | 1205.00 | 1201.37 | 3.63 | 0.3022 | 24512.11 | 2964134 |
36 | 600519.SH | 20191107 | 1196.51 | 1201.88 | 1189.00 | 1201.37 | 1193.00 | 8.37 | 0.7016 | 16167.88 | 1933204 |
37 | 600519.SH | 20191106 | 1197.00 | 1204.00 | 1188.88 | 1193.00 | 1199.00 | -6.00 | -0.5004 | 19737.51 | 2362005 |
38 | 600519.SH | 20191105 | 1199.50 | 1205.00 | 1192.00 | 1199.00 | 1199.59 | -0.59 | -0.0492 | 22254.72 | 2667596 |
39 | 600519.SH | 20191104 | 1190.00 | 1209.99 | 1189.00 | 1199.59 | 1185.00 | 14.59 | 1.2312 | 26737.98 | 3209264 |
40 | 600519.SH | 20191101 | 1181.00 | 1191.95 | 1172.50 | 1185.00 | 1180.01 | 4.99 | 0.4229 | 22811.96 | 2697638 |
41 | 600519.SH | 20191031 | 1196.00 | 1198.00 | 1176.15 | 1180.01 | 1183.80 | -3.79 | -0.3202 | 25909.27 | 3068885 |
42 | 600519.SH | 20191030 | 1190.00 | 1192.70 | 1176.00 | 1183.80 | 1193.00 | -9.20 | -0.7712 | 21254.75 | 2516524 |
43 | 600519.SH | 20191029 | 1181.11 | 1199.96 | 1177.77 | 1193.00 | 1178.29 | 14.71 | 1.2484 | 27803.71 | 3314272 |
44 | 600519.SH | 20191028 | 1166.01 | 1181.01 | 1165.00 | 1178.29 | 1171.35 | 6.94 | 0.5925 | 22485.99 | 2644563 |
45 | 600519.SH | 20191025 | 1153.30 | 1172.50 | 1143.03 | 1171.35 | 1150.27 | 21.08 | 1.8326 | 25998.45 | 3015929 |
46 | 600519.SH | 20191024 | 1164.95 | 1166.00 | 1147.16 | 1150.27 | 1158.91 | -8.64 | -0.7455 | 26178.44 | 3025246 |
47 | 600519.SH | 20191023 | 1168.00 | 1178.00 | 1156.11 | 1158.91 | 1170.80 | -11.89 | -1.0155 | 23080.21 | 2684922 |
48 | 600519.SH | 20191022 | 1178.00 | 1181.50 | 1163.89 | 1170.80 | 1168.50 | 2.30 | 0.1968 | 19309.43 | 2262188 |
49 | 600519.SH | 20191021 | 1171.86 | 1178.90 | 1163.30 | 1168.50 | 1175.79 | -7.29 | -0.6200 | 25274.67 | 2955024 |
50 | 600519.SH | 20191018 | 1179.00 | 1189.99 | 1171.69 | 1175.79 | 1183.33 | -7.54 | -0.6372 | 28291.61 | 3335011 |
51 | 600519.SH | 20191017 | 1176.00 | 1186.66 | 1162.50 | 1183.33 | 1170.00 | 13.33 | 1.1393 | 30508.70 | 3578144 |
52 | 600519.SH | 20191016 | 1168.00 | 1187.50 | 1160.00 | 1170.00 | 1211.00 | -41.00 | -3.3856 | 59150.59 | 6935973 |
53 | 600519.SH | 20191015 | 1180.00 | 1215.68 | 1177.03 | 1211.00 | 1180.00 | 31.00 | 2.6271 | 40034.73 | 4806856 |
54 | 600519.SH | 20191014 | 1186.00 | 1187.66 | 1170.00 | 1180.00 | 1174.60 | 5.40 | 0.4597 | 27187.51 | 3209363 |
55 | 600519.SH | 20191011 | 1157.00 | 1175.00 | 1152.21 | 1174.60 | 1155.00 | 19.60 | 1.6970 | 28689.25 | 3343560 |
56 | 600519.SH | 20191010 | 1127.00 | 1158.93 | 1109.02 | 1155.00 | 1146.81 | 8.19 | 0.7142 | 41173.70 | 4685560 |
57 | 600519.SH | 20191009 | 1166.20 | 1166.20 | 1135.05 | 1146.81 | 1167.10 | -20.29 | -1.7385 | 35788.57 | 4105282 |
58 | 600519.SH | 20191008 | 1153.00 | 1180.00 | 1152.01 | 1167.10 | 1150.00 | 17.10 | 1.4870 | 31045.27 | 3631091 |
59 | 600519.SH | 20190930 | 1163.00 | 1169.43 | 1150.00 | 1150.00 | 1174.75 | -24.75 | -2.1068 | 30825.14 | 3565989 |
60 | 600519.SH | 20190927 | 1164.00 | 1183.00 | 1153.00 | 1174.75 | 1167.00 | 7.75 | 0.6641 | 22826.61 | 2671754 |
plot(maotai$trade_date, maotai$close, pch=20)
#读取百度指数
baidu <- read.csv("baiduindex.csv",stringsAsFactors = TRUE)
knitr::kable(baidu)
num | Maotai | wine | stock | Guizhou | date |
---|---|---|---|---|---|
1 | 5795 | 2180 | 1034 | 5723 | 20191226 |
2 | 4881 | 2046 | 928 | 4813 | 20191225 |
3 | 4650 | 2174 | 836 | 4236 | 20191224 |
4 | 5466 | 2285 | 1006 | 5403 | 20191223 |
5 | 4203 | 1967 | 389 | 2777 | 20191222 |
6 | 4121 | 1763 | 425 | 2736 | 20191221 |
7 | 4902 | 1806 | 950 | 3760 | 20191220 |
8 | 5397 | 1996 | 1025 | 4000 | 20191219 |
9 | 6350 | 2070 | 1218 | 4696 | 20191218 |
10 | 6857 | 2139 | 1181 | 5194 | 20191217 |
11 | 5671 | 2016 | 1056 | 4974 | 20191216 |
12 | 3961 | 1818 | 400 | 2230 | 20191215 |
13 | 3871 | 1853 | 402 | 2111 | 20191214 |
14 | 4881 | 1910 | 1004 | 3892 | 20191213 |
15 | 5280 | 1982 | 989 | 3702 | 20191212 |
16 | 5332 | 2020 | 1019 | 4386 | 20191211 |
17 | 4423 | 1888 | 890 | 4405 | 20191210 |
18 | 4574 | 2008 | 1005 | 4730 | 20191209 |
19 | 3597 | 1916 | 334 | 2566 | 20191208 |
20 | 3666 | 1789 | 429 | 2648 | 20191207 |
21 | 4774 | 1861 | 1032 | 4816 | 20191206 |
22 | 4834 | 1878 | 1050 | 4669 | 20191205 |
23 | 5363 | 2065 | 1146 | 5580 | 20191204 |
24 | 4984 | 1867 | 1154 | 5861 | 20191203 |
25 | 5277 | 1868 | 1179 | 6236 | 20191202 |
26 | 3874 | 1679 | 432 | 2729 | 20191201 |
27 | 4207 | 1864 | 662 | 3512 | 20191130 |
28 | 6756 | 1926 | 1316 | 9568 | 20191129 |
29 | 4608 | 1889 | 933 | 4160 | 20191128 |
30 | 4894 | 1717 | 1073 | 4232 | 20191127 |
31 | 5316 | 1895 | 1068 | 5095 | 20191126 |
32 | 5323 | 2014 | 970 | 5542 | 20191125 |
33 | 3874 | 1685 | 368 | 2602 | 20191124 |
34 | 3645 | 1615 | 478 | 2825 | 20191123 |
35 | 4898 | 1636 | 1121 | 5817 | 20191122 |
36 | 4998 | 1631 | 1098 | 5042 | 20191121 |
37 | 4455 | 1517 | 1070 | 4063 | 20191120 |
38 | 4541 | 1669 | 1019 | 4182 | 20191119 |
39 | 4727 | 1572 | 996 | 4405 | 20191118 |
40 | 3621 | 1352 | 438 | 2361 | 20191117 |
41 | 3850 | 1342 | 500 | 2358 | 20191116 |
42 | 4682 | 1449 | 1092 | 4112 | 20191115 |
43 | 5066 | 1553 | 1126 | 4626 | 20191114 |
44 | 5074 | 1633 | 1064 | 4607 | 20191113 |
45 | 5260 | 1798 | 1023 | 3784 | 20191112 |
46 | 7047 | 2080 | 1094 | 4217 | 20191111 |
47 | 3630 | 1531 | 351 | 1923 | 20191110 |
48 | 3406 | 1497 | 412 | 1916 | 20191109 |
49 | 4471 | 1727 | 917 | 4004 | 20191108 |
50 | 4288 | 1572 | 878 | 3697 | 20191107 |
51 | 4483 | 1700 | 920 | 3693 | 20191106 |
52 | 4572 | 1650 | 1012 | 3712 | 20191105 |
53 | 4415 | 1609 | 908 | 3811 | 20191104 |
54 | 3443 | 1516 | 338 | 1626 | 20191103 |
55 | 3559 | 1578 | 400 | 1788 | 20191102 |
56 | 4297 | 1553 | 832 | 3719 | 20191101 |
57 | 4416 | 1512 | 899 | 3957 | 20191031 |
58 | 4495 | 1639 | 945 | 4021 | 20191030 |
59 | 4681 | 1514 | 956 | 3981 | 20191029 |
60 | 5001 | 1578 | 950 | 3902 | 20191028 |
61 | 3494 | 1271 | 385 | 1646 | 20191027 |
62 | 3716 | 1339 | 436 | 1767 | 20191026 |
63 | 4596 | 1481 | 875 | 3804 | 20191025 |
64 | 4813 | 1614 | 865 | 4328 | 20191024 |
65 | 4855 | 1507 | 900 | 3963 | 20191023 |
66 | 4812 | 1538 | 849 | 4036 | 20191022 |
67 | 4855 | 1574 | 938 | 4361 | 20191021 |
68 | 3380 | 1430 | 378 | 1881 | 20191020 |
69 | 3848 | 1283 | 390 | 2057 | 20191019 |
70 | 4958 | 1461 | 1066 | 4448 | 20191018 |
71 | 5477 | 1648 | 1098 | 4465 | 20191017 |
72 | 7074 | 1670 | 1516 | 7096 | 20191016 |
73 | 9716 | 1886 | 1945 | 8583 | 20191015 |
74 | 4841 | 1452 | 967 | 4127 | 20191014 |
75 | 3724 | 1312 | 398 | 1535 | 20191013 |
76 | 4574 | 1631 | 582 | 2453 | 20191012 |
77 | 5198 | 1550 | 1045 | 3862 | 20191011 |
78 | 5470 | 1589 | 1076 | 4153 | 20191010 |
79 | 5752 | 1710 | 1009 | 4146 | 20191009 |
80 | 6509 | 1844 | 991 | 4614 | 20191008 |
81 | 7054 | 1874 | 981 | 4013 | 20190930 |
82 | 6683 | 1804 | 1169 | 4758 | 20190927 |
plot(baidu$date, baidu$Maotai, pch=20)
plot(baidu$date, baidu$wine, pch=21)
plot(baidu$date, baidu$stock, pch=22)
plot(baidu$date, baidu$Guizhou, pch=23)
#基姆拉尔森计算公式计算今天是否开盘
Kim_larson <- function(d, m, y){
if(m == 1|| m == 2) {
m <- m+12;
y <- y-1;
}
day <- (d + 2*m+floor(3 * (m+1)/5) + y + floor(y/4) - floor(y/100) + floor(y/400))%%7
(y + y /4 + y / 400 - y / 100 + 2 * m + 3 * (m + 1)/5 + d) %% 7;
if(day == 5 || day == 6){
return(day)
}
else {
return(day)
}
}
#对百度指数的数据进行预处理
for (i in 1:length(baidu$date)) {
date <- baidu$date[i]
date%%100 ##得到日期
dd <- date%%100
((date-dd)/100)%%100 ##得到月份
mm <- ((date-dd)/100)%%100
(((date-dd)/100)-mm)/100 ##得到年份
yy <- (((date-dd)/100)-mm)/100
#调用函数
date_1 <- Kim_larson(dd, mm, yy)
if(date_1 == 5 || date_1 == 6){
#如果这天不是开盘日就先将改日期置为缺省值
baidu$date[i] <- NA
baidu$Maotai[i] <- NA
baidu$wine[i] <- NA
baidu$stock[i] <- NA
baidu$Guizhou[i] <- NA
}
}
#判断是否是缺省值, #na.omit函数可以直接删除值所在的行
date_omit <- baidu$date[!is.na(baidu$date)]
maotai_omit <- baidu$Maotai[!is.na(baidu$Maotai)]
wine_omit <- baidu$wine[!is.na(baidu$wine)]
stock_omit <- baidu$stock[!is.na(baidu$stock)]
guizhou_omit <- baidu$Guizhou[!is.na(baidu$Guizhou)]
#将数据对齐之后加入到数据框——data中
data = data.frame(
maotai = maotai_omit, wine = wine_omit, stock = stock_omit, guizhou = guizhou_omit, date = date_omit)
#插入股价的收盘价到数据框中
data$price <- maotai$close
本文的分析过程将分为以下三个步骤: ① 分析设计,要对这些数据进行相关性分析就要找到一个明确有效的方法,而Peason相关性分析就是这样一个前人提出并验证过的方法,Pearson能够对股价和每日指数这样的连续变量、符合正态分布的变量进行分析的有效方法。 ② 数据分析,本文要逐个对不同的自变量(百度指数)与因变量(股价的收盘价)进行检验分析,分析这些变量与股价的相关性是是显著还是不明显,是轻微还是强烈。所以,第一步就是要设定一个零假设(Null HyPothesis):记作H0,以及一个对立假设(Alternative HyPothesis):记作H1。如果能够证明零假设错误那么就能推断出对立假设是成立,即百度指数的变化是与股价的波动有一定的关系,至于关系程度有多大,让来看看接下来的分析!
本文提出的零假设以及对立假设: H0: 百度指数与股价的波动是没有关系的 H1: 百度指数与股价的波动是有关系的
接下来开始计算Pearson相关系数,这个概念的定义:这是一个衡量两个数据集合是否在一条线上的系数,即这两对连续变量之间的线性关系有多大。通常情况下通过以下取值范围判断变量的相关强度:相关系数r在0.8-1.0之间是代表着有极强相关性,在0.6-0.8之间是强相关,在0.4-0.6之间是中等程度相关,在0.2-0.4之间是弱相关,在0.0-0.2之间是极弱相关或无相关
本文运用了三种方法进行r值的计算,第一个是直接按照公式设置分子和分母,计算出相关系数r;第二个是直接运用R语言提供的cor函数计算得到r值,第三个是运用R语言提供的chart.Correlation函数计算得到r值
对于变量的选择,因为在这里本文将要运用的是Pearson(Pearson相关系数)来进行相关性分析,所以要选择适用于该方法的变量,即符合连续分布或正态分布的变量。而且这个变量又要与股价收盘价这项数据相互独立。因此,本文的自变量将会选择百度指数这个数据分析平台上的数据,它既是符合Pearson要求的连续型变量,其分布当然也是遵循正态分布。 至于为何会选择贵州茅台这一支股票呢?原因是贵州茅台是最近的一支牛股,其股价的波动很大并且与其相关的搜索热度很高,其关键词的数据也极为丰富,所以在百度指数上的关键词波动相对于其他的股票的波动较为显著,这更有利于进行相关性分析。 作为本文因变量的贵州茅台的股价数据来源于Tushare,Tushare是一个开放的,免费的平台,不带任何商业性质和目的的开源数据平台,其数据内容包含股票、基金、期货、债券、外汇、行业大数据,同时包括了数字货币行情等区块链数据的全数据品类的金融大数据平台,为各类金融投资和研究人员提供适用的数据和工具。作为自变量的关键词:“茅台”、“茅台酒”、“茅台股价”和“贵州茅台”的指数来源于百度指数,百度指数是以百度海量网民行为数据为基础的数据分享平台。在这里,你可以研究关键词关注趋势、洞察网民需求变化、监测媒体舆情趋势、定位数字消费者特征。还可以从行业视角,分析市场特点、洞悉品牌表现。股价数据在Tushare提供的R语言接口中已经整理规范(来张图表),从下图可以看到因为股票的收盘价对应的日期只有周一到周五,而整理出来的百度指数的日期则是每日变化,所以本文利用基姆拉尔森计算公式计算出该百度指数的日期是否是周末,如果是周末则在百度指数的数据框中剔除,以此来保证能够对齐数据,从而方便进行接下来的数据分析。
那么现在新的问题又来了,这个基于少部分样本得到的r值到底能不能代表总体的相关系数(P值)呢?即试判断通过这个样本计算出来的相关系数与总体的相关系数之间是否存在显著性差异?回答这个问题之前,我们需要知道影响这个问题的答案有两种解释,一、如果是因为抽样时出现偶然误差,我们会相信零假设是正确的;二、是因为我们设定的这个零假设本身就是错误,即对立假设才是成立的。 所以,本文将用双尾显著性检验来推论这两个系数之间是否有显著性差异,即这个差异发生是否显著。P值越大,说明我们目前不接受零假设的概率越大,也就是要接受H1的概率越大。在原来传统的方法中:要进行T值检验就要先通过公式计算出T值和自由度(df值)然后根据T值表和df查到对应的T(df)0.05的值,如果现在计算出来的T值能比这个查到的值要大就证明原假设(零假设)不成立,即通过即百度指数和股价的波动是有关的。当然,跟上述的r值一样我们也能在R语言中也能找到现成的函数来完成P值的计算 在这里我们运用cor.test()函数来帮助我们计算得到P值,从下面可以看出cor.test()函数不仅能算出显著性P值,还能给出置信区间[a, b](默认显著性水平是0.05,P值只要在a与b之间就可以说我们 95% 确信实际上总体的相关系数也是这个值)
从该图的对角线我们能够得到数据的分布图;下三角是具有拟合线的双变量散点图 上三角显示的是相关系数以及显著性水平。其中,、和分别表示1%、5%和10%的显著性水平。
#下面进入参数的相关性分析
#循环比较百度指数的每个变量与股票收盘价的相关系数
#样本总数为60
n <- nrow(data)
for (i in 1:4) {
#r的计算
#data第1列为关键词——“茅台”的百度指数,第二列为“茅台酒”,第三列为“茅台g股价”,第四列为“贵州茅台”
x <- data[,i]
#data第6列为的当天的股票——贵州茅台的收盘价
y <- data[,6]
#按照公式设置分子
numerator <- (n * sum(x * y) - sum(x) * sum(y))
#按照公式设置分母
denominator <- (sqrt(n * sum(x ^ 2) - sum(x) ^ 2) * sqrt(n * sum(y ^ 2) - sum(y) ^ 2))
#计算出相关系数r
r <- numerator / denominator
print(r)
#计算检验的统计量:
t <- r * (sqrt(n - 2)) / sqrt(1 - r ^ 2)
print(t)
}
## [1] -0.126346
## [1] -0.9699959
## [1] -0.5249842
## [1] -4.697573
## [1] 0.06703575
## [1] 0.5116801
## [1] -0.2256669
## [1] -1.764134
#当然也可以用R语言自带的Pearson相关系数的计算函数,这里使用的方法默认是Pearson的方法
data$date <- NULL ##删除时间列
data_corr <- cor(data[1:5])
for (i in 1:4) {
print(cor.test(x = data[,i], y = data[,5]))
}
##
## Pearson's product-moment correlation
##
## data: data[, i] and data[, 5]
## t = -0.97, df = 58, p-value = 0.3361
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.3684500 0.1318074
## sample estimates:
## cor
## -0.126346
##
##
## Pearson's product-moment correlation
##
## data: data[, i] and data[, 5]
## t = -4.6976, df = 58, p-value = 1.66e-05
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.6872889 -0.3127513
## sample estimates:
## cor
## -0.5249842
##
##
## Pearson's product-moment correlation
##
## data: data[, i] and data[, 5]
## t = 0.51168, df = 58, p-value = 0.6108
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.1901253 0.3155885
## sample estimates:
## cor
## 0.06703575
##
##
## Pearson's product-moment correlation
##
## data: data[, i] and data[, 5]
## t = -1.7641, df = 58, p-value = 0.08298
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## -0.45359924 0.02997551
## sample estimates:
## cor
## -0.2256669
#由于corrplot有自带的相关系数矩阵的可视化方法
library(corrplot)
## corrplot 0.84 loaded
#生成cor系数矩阵,在这里使用上三角为圆形,下三角为数字的可视化方案
corrplot(corr=data_corr, order="AOE", type="upper", tl.pos = "d")
corrplot(corr=data_corr, add=T, type="lower", method = "number", order = "AOE", diag = F, tl.pos = "n", cl.pos = "n")
#计算r值并可视化的另一个方法,利用PerformanceAnalytics这个包
library(PerformanceAnalytics)
## Loading required package: xts
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Registered S3 method overwritten by 'xts':
## method from
## as.zoo.xts zoo
##
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:graphics':
##
## legend
chart.Correlation(data, method = "pearson")
表格数据:
knitr::kable(data_corr)
maotai | wine | stock | guizhou | price | |
---|---|---|---|---|---|
maotai | 1.0000000 | 0.3872217 | 0.7991704 | 0.6321336 | -0.1263460 |
wine | 0.3872217 | 1.0000000 | 0.1800265 | 0.3375799 | -0.5249842 |
stock | 0.7991704 | 0.1800265 | 1.0000000 | 0.7726827 | 0.0670358 |
guizhou | 0.6321336 | 0.3375799 | 0.7726827 | 1.0000000 | -0.2256669 |
price | -0.1263460 | -0.5249842 | 0.0670358 | -0.2256669 | 1.0000000 |
一、在百度指数关键词“茅台”、“茅台酒”、“茅台股价”和“贵州茅台”的样本量只有三个月的量的基础上,这些关键词与当天对应的贵州茅台的收盘价呈微弱关系或者没有关系,
二、Pearson相关系数分析只能确定两变量之间是否存在相互关系,并不能确定方向性,接下来需要做回归分析才能保证方向性的关系是否显著。另外,Pearson相关系数分析不适用与小的或者非常稀疏的数据集,从本文的整理出来的散点图就可以看出来本文的数据非常分散。最后,Pearson系数几乎只适合描述两组数据之间的变化趋势。
三、双尾显著性检验的检验目的是检验抽样的样本统计量的参数与实际总体参数的差是否过大(无论正方向,还是负方向),把风险分摊到左右两侧。比如在本文中设置的显著性水平为5%,则概率曲线的左右两侧各占2.5%,也就是95%的置信区间。
四、希望和寄语 虽然这个相关性研究并没有得到期望的相关性结论,但是本文在此希望这个基础的步骤能成为在以后要进行的对股价涨跌分析预测的庞大工程的关键一步,也希望这样基础的研究能给以后的研究提供些许帮助,感谢!