R統(tǒng)計實踐—經(jīng)濟(jì)結(jié)構(gòu)變動分析與檢驗

# 引言
近一年多以來,大盤藍(lán)籌股多呈現(xiàn)震蕩上漲的走勢,部分小盤股持續(xù)下跌,滬指和其他指數(shù)波動尤為明顯。本文以滬指和創(chuàng)業(yè)板指日收益率變化進(jìn)行分析,使用數(shù)據(jù)試圖分析:2023年與2022年相比,滬指與創(chuàng)業(yè)板指的日百分比收益率之間的關(guān)系是否發(fā)生發(fā)生顯著變化,在哪些方面存在顯著差異。
本文使用Rmarkdown語法書寫,復(fù)制文本內(nèi)容粘貼至Rmarkdown即可生成帶有代碼段、運算、繪圖結(jié)果的word/pdf/html文檔。
# 思路
1.對2022年和2023年滬指與創(chuàng)業(yè)板指的日百分比收益率分別進(jìn)行回歸分析,觀察二者相關(guān)性、相關(guān)系數(shù)的變化。
2.計算每一交易日二者收益率之差,分析2022年收益率之差 與
2023年收益率之差在統(tǒng)計上是否差異顯著。
3.經(jīng)濟(jì)結(jié)構(gòu)變動檢驗。
# 分析過程
## 獲取數(shù)據(jù)
```{r message=FALSE, warning=FALSE}
#所需R包
library(pedquant)?? #數(shù)據(jù)獲取包
library(tidyverse)? #數(shù)據(jù)分析包
library(ggpmisc)??? #繪圖包
library(tseries)??? #統(tǒng)計檢驗包
library(strucchange) #統(tǒng)計檢驗包
```
```{r}
zs <- md_stock(symbol = c('000001.ss','399006.sz'),
?????????????? from = '2022-01-01',to = Sys.Date())
hz <- zs[[1]]
cyb <- zs[[2]]
df <- rbind(hz,cyb) %>% as_tibble()
```
## 數(shù)據(jù)預(yù)覽
```{r}
# 前五行數(shù)據(jù)
head(df %>% select(1:3,7,8))
```
```{r}
# 最后五行數(shù)據(jù)
tail(df %>% select(1:3,7,8))
```
```{r}
ggplot(df)+geom_line(aes(x=date,y=close,color=symbol))
```

## 繪制指數(shù)日百分比收益圖
```{r}
ggplot(df)+geom_line(aes(x=date,y=change_pct,color=symbol))
```

## 日百分比收益平穩(wěn)性檢驗
```{r}
adf.test(hz$change_pct)
adf.test(cyb$change_pct)
```
數(shù)據(jù)顯示二者日百分比收益率均為平穩(wěn)時間序列。
# 回歸分析
## 2022年日百分比收益回歸分析
```{r}
t22 <- tibble(
? date = hz %>% filter(date < "2023-01-01" & date > "2022-06-01") %>% .$date,
? hz_pct = hz %>% filter(date < "2023-01-01" & date > "2022-06-01") %>% .$change_pct,
? cyb_pct = cyb %>% filter(date < "2023-01-01" & date > "2022-06-01") %>% .$change_pct
)
p22 <- ggplot(data = t22, mapping = aes(x = cyb_pct, y = hz_pct)) +
? geom_point(color = "blue") +
? geom_smooth(method = "lm", se = FALSE,
??? color = "black", formula = y ~ x) +
? stat_poly_eq(formula = y ~ x,
??? aes(label = paste(..eq.label..,
????? ..rr.label..,? sep = "~~~")), parse = TRUE) +
? ggtitle("2022 hz(y) return ~ cyb(x) return")
p22
```

回歸結(jié)果與上圖標(biāo)注相同。
```{r}
m22 <- lm(formula = hz_pct ~ cyb_pct, data = t22)
summary(m22)
```
## 2023年日百分比收益回歸分析
```{r}
t23 <- tibble(
? date = hz %>% filter(date > "2023-01-01") %>% .$date,
? hz_pct = hz %>% filter(date > "2023-01-01") %>% .$change_pct,
? cyb_pct = cyb %>% filter(date > "2023-01-01") %>% .$change_pct
)
p23 <- ggplot(data = t23, mapping = aes(x = cyb_pct, y = hz_pct)) +
? geom_point(color = "blue") +
? geom_smooth(method = "lm", se = FALSE,
???????????? color = "black", formula = y ~ x ) +
? stat_poly_eq(formula = y ~ x,
???????????? aes(label = paste(..eq.label..,
????????????????? ..rr.label.., sep = "~~~")),
???????????? parse = TRUE) +
? ggtitle("2023 hz(y) return ~ cyb(x) return")
p23
```

回歸結(jié)果與上圖標(biāo)注相同。
```{r}
m23 <- lm(formula = hz_pct ~ cyb_pct, data = t23)
summary(m23)
```
結(jié)果顯示2022年下半年與2023年上半年,滬指與創(chuàng)業(yè)板指日收益率相關(guān)系數(shù)存在變化。
# 日收益率差異分析
定于一個新變量:日收益率差異=某交易日滬指百分比收益率-當(dāng)日創(chuàng)業(yè)板指百分比收益率
## 日收益率差異的方差分析
```{r}
d23 <- mutate(t23, d2023 = hz_pct - cyb_pct)
d22 <- mutate(t22, d2022 = hz_pct - cyb_pct)
var.test(d23$d2023, d22$d2022)
```
數(shù)據(jù)顯示2022年下半年和2023年上半年,兩個指數(shù)日收益率的差異的方差存在顯著變化。
## 日收益率差異的均值比較
```{r}
t.test(d23$d2023, d22$d2022, var.equal = F)
```
數(shù)據(jù)顯示2022年下半年和2023年上半年,兩個指數(shù)日收益率的差異的均值無顯著差異。即:2022下半年兩個指數(shù)每天的漲跌幅的偏差的均值
與 2023年上半年兩個指數(shù)的偏差的均值 在統(tǒng)計上無顯著變化。
# 經(jīng)濟(jì)結(jié)構(gòu)變動檢驗
上述分析及檢驗方法只是粗淺的認(rèn)識,統(tǒng)計學(xué)中有針對于經(jīng)濟(jì)結(jié)構(gòu)變動的檢驗方法,最具代表性的是以經(jīng)濟(jì)學(xué)家鄒至莊命名的"鄒檢驗法"。
其基本邏輯如下:
如果存在結(jié)構(gòu)變動點,例如在t時刻前后結(jié)構(gòu)不同:
1.對整個時間段進(jìn)行回歸,計算殘差平方和,記為x;
2.對【開始-t】區(qū)間進(jìn)行回歸,計算殘差平方和x1;
3.對【t-結(jié)束】區(qū)間進(jìn)行回歸,計算殘差平方和x2;
4.原假設(shè)H0:結(jié)構(gòu)無變化,則:x-(x1+x2) 的值應(yīng)該比較小。
5.構(gòu)造統(tǒng)計量,檢驗上述值是否比較小。理論上構(gòu)造的是F統(tǒng)計量。
F=【(x-(x1+x2))/回歸方程解釋變量個數(shù)】/【(x1+x2)/(樣本量-回歸方程解釋變量個數(shù)\*2】
示意圖

在左圖中,結(jié)構(gòu)無變化,數(shù)據(jù)點到整段直線? 與? 到分段直線的距離之和 差別不大;
在右圖中,結(jié)構(gòu)發(fā)生變化,數(shù)據(jù)點到分段直線的距離之和? 顯著變小了。也說明用分段來回歸,更準(zhǔn)確。
```{r}
# 整理檢驗數(shù)據(jù)
tbb <- tibble(
? date = hz %>% filter(date > "2022-06-01") %>% .$date,
? hz_pct = hz %>% filter(date > "2022-06-01") %>% .$change_pct,
? cyb_pct = cyb %>% filter(date > "2022-06-01") %>% .$change_pct
)
# 檢驗過程及結(jié)果
sctest(hz_pct ~ cyb_pct, data = tbb,
?????? type = "Chow", point = 146) ?
#Chow 代表用鄒檢驗法
#146指數(shù)據(jù)集中第146個數(shù)據(jù)點(即2023首個交易日20230103)
```
結(jié)果表明,無法拒絕原假設(shè)。
上述使用傳統(tǒng)的鄒檢驗法,指明了結(jié)構(gòu)變動點。如果結(jié)構(gòu)變動點未知,通過序列遍歷的方式尋找結(jié)構(gòu)變動點。
```{r}
sctest(hz_pct ~ cyb_pct, data = tbb,
?????? from = 0.15,to = 0.85,type = "expF")
# 只對序列的中間15%-85%的數(shù)據(jù)進(jìn)行遍歷查找變動點
```
結(jié)果表明,無法拒絕原假設(shè)。
# 結(jié)論
1.在2022年下半年與2023年上半年兩個時間段里,滬指和創(chuàng)業(yè)板指走勢圖存在差異;
2.兩個指數(shù)日百分比收益率存在顯著的相關(guān)關(guān)系;
3.相關(guān)關(guān)系在這兩個時間段發(fā)生了變化;
4.二者日百分比收益率差異的方差在兩個時間段顯著不同;
5.二者日百分比收益率差異的均值在兩個時間段無顯著差異;
6.二者日百分比收益率相關(guān)性在兩個時間段沒有顯著的結(jié)構(gòu)變動。
# 備注
本文的數(shù)據(jù)獲取、數(shù)據(jù)清晰、探索性分析、建模、假設(shè)檢驗全過程均使用的R腳本,數(shù)據(jù)由R自動獲取,無需依賴本地數(shù)據(jù)。
復(fù)制本文代碼塊至R腳本中即可得出相應(yīng)結(jié)果或繪圖。
本文是由Rmarkdown自動編譯生成。