Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 计算任何一对股票的相关性_R_Correlation - Fatal编程技术网

R 计算任何一对股票的相关性

R 计算任何一对股票的相关性,r,correlation,R,Correlation,我想得到每对股票的月收益率之间的相关性 让我向您展示我的数据的简单版本: > head(x, 20) # A tibble: 20 x 4 PERMNO date COMNAM RET <int> <int> <chr> <dbl> 1 10107 20160129 MICROSOFT CORP -0.007030 2 10107 20160229 MI

我想得到每对股票的月收益率之间的相关性

让我向您展示我的数据的简单版本:

> head(x, 20)
# A tibble: 20 x 4
   PERMNO     date         COMNAM       RET
    <int>    <int>          <chr>     <dbl>
 1  10107 20160129 MICROSOFT CORP -0.007030
 2  10107 20160229 MICROSOFT CORP -0.069886
 3  10107 20160331 MICROSOFT CORP  0.085495
 4  10107 20160429 MICROSOFT CORP -0.097049
 5  10107 20160531 MICROSOFT CORP  0.069982
 6  10107 20160630 MICROSOFT CORP -0.034528
 7  10107 20160729 MICROSOFT CORP  0.107680
 8  10107 20160831 MICROSOFT CORP  0.020113
 9  10107 20160930 MICROSOFT CORP  0.002436
10  10107 20161031 MICROSOFT CORP  0.040278
11  10107 20161130 MICROSOFT CORP  0.012183
12  10107 20161230 MICROSOFT CORP  0.031198
13  14593 20160129      APPLE INC -0.075242
14  14593 20160229      APPLE INC -0.001335
15  14593 20160331      APPLE INC  0.127211
16  14593 20160429      APPLE INC -0.139921
17  14593 20160531      APPLE INC  0.071368
18  14593 20160630      APPLE INC -0.042660
19  14593 20160729      APPLE INC  0.090063
20  14593 20160831      APPLE INC  0.023606
>头部(x,20)
#一个tibble:20x4
PERMNO date COMNAM RET
1 10107 20160129微软公司-0.007030
2 10107 20160229微软公司-0.069886
3 10107 20160331微软公司0.085495
4 10107 20160429微软公司-0.097049
5 10107 20160531微软公司0.069982
6 10107 20160630微软公司-0.034528
7 10107 20160729微软公司0.107680
8 10107 20160831微软公司0.020113
9 10107 20160930微软公司0.002436
10 10107 20161031微软公司0.040278
11 10107 20161130微软公司0.012183
12 10107 20161230微软公司0.031198
13 14593 20160129苹果公司-0.075242
14 14593 20160229苹果公司-0.001335
15 14593 20160331苹果公司0.127211
16 14593 20160429苹果公司-0.139921
17 14593 20160531苹果公司0.071368
18 14593 20160630苹果公司-0.042660
19 14593 20160729苹果公司0.090063
20 14593 20160831苹果公司0.023606

理想情况下,我希望对我的数据中的成对股票(微软和苹果、微软和好市多等)进行相关性度量。

将您的数据转换为以公司名称为列标题的回报数据框,您应该能够将其传递到
cor
函数中。例如,如果数据帧被称为
df
,则可以使用
dplyr
tidyr
库:

df1 = dplyr::select(df, date, COMNAM, RET)
df2 = dplyr::select(tidyr::spread(df1, key = COMNAM, value = RET), -date)
answer = cor(df2, use = "pairwise.complete.obs")
我清理了你的数据,所以
COMNAM
只是多字公司名称的第一个字。这是我得到的输出:

> answer
              APPLE MICROSOFT
APPLE     1.0000000 0.8763755
MICROSOFT 0.8763755 1.0000000

这是一个更完整的示例,可能会为执行此类分析和/或在何处/如何获取数据打开一些新思路的大门:

library(quantmod)
library(tidyverse)
library(lubridate)

symbols <- c("AAPL", "MSFT", "GOOG")
getSymbols(symbols)
stocks <- data.frame(as.xts(merge(AAPL, MSFT, GOOG)))
stocks$date <- row.names(stocks)
row.names(stocks) <- NULL

# head(stocks)

jan31 <- ymd("2016-01-31")
days_to_keep <- jan31 %m+% months(0:11)
# days_to_keep

res <- stocks %>%
  select(ends_with("Close"), date) %>%
  mutate(date = ymd(date)) %>%
  filter(date %in% days_to_keep)

res %>% select(-date) %>% cor()

#            AAPL.Close MSFT.Close GOOG.Close
# AAPL.Close  1.0000000  0.9198357  0.9313001
# MSFT.Close  0.9198357  1.0000000  0.9103830
# GOOG.Close  0.9313001  0.9103830  1.0000000

# Or more visually...
res %>% select(-date) %>% pairs()
库(quantmod)
图书馆(tidyverse)
图书馆(lubridate)
符号%pairs()

不错,杰森!!