时间:2021-05-20
前几天得到了3700+支股票一周内的波动率,想要计算每周各个股票之间的相关系数并将其可视化。最终结果保存在制定文件夹中。
部分数据如下:
2
总代码如下:
data<-read.csv("D:/data/stock_day_close_price_week_series.csv", header = TRUE,blank.lines.skip = TRUE)library(colorspace)library(grid)library(lattice)library(mice)library(data.table)library(VIM)library(dplyr)library(corrplot)matrixplot(data)aggr(data,prop=FALSE,numbers=TRUE,sortVars=TRUE)#查看缺失值imp<-mice(data[,3:7],1)#用链式方程法填补缺失值stripplot(imp,pch=20,cex=1.2)data1<-complete(imp,action = 1)dat<-cbind(data[,1:2],data1)d<-unlist(levels(factor(dat[,2])))#得到各个开始日期mydata<-list()mydatap<-list()xg<-list()for (i in 1:11 ) {#修改组数有多少个开始日期 mydata[[i]] <- filter(dat,Start_date==d[[i]])#按照开始日期对数据分组 mydatap[[i]] <- mydata[[i]][1:nrow(mydata[[i]]),3:7] xg[[i]]<- cor(t(mydatap[[i]]))#计算相关系数矩阵 rownames(xg[[i]])=mydata[[i]][,1] colnames(xg[[i]])=mydata[[i]][,1] dat<-filter(dat,Start_date!=d[[i]]) write.csv (xg[[i]],file=paste0('D:/data/','relation_graph_',d[[i]],'.csv'))#将相关系数矩阵存到文件中}补充:Pearson相关系数R代码实现
Pearson's r,称为皮尔逊相关系数(Pearson correlation coefficient),用来反映两个随机变量之间的线性相关程度。
要理解皮尔逊相关系数,首先要理解协方差(Covariance)。协方差可以反映两个随机变量之间的关系,如果一个变量跟随着另一个变量一起变大或者变小,那么这两个变量的协方差就是正值,就表示这两个变量之间呈正相关关系,反之相反。
(1) 两个变量之间呈很强的正相关性
(2) 两个变量之间并没有很强的正相关性,协方差的值很大是因为X或Y的标准差很大
那么到底哪个结论正确呢?只要把X和Y变量的标准差,从协方差中剔除不就知道了吗?
协方差能告诉我们两个随机变量之间的关系,但是却没法衡量变量之间相关性的强弱。
因此,为了更好地度量两个随机变量之间的相关程度,引入了皮尔逊相关系数。
可以看到,皮尔逊相关系数就是用协方差除以两个变量的标准差得到的。
代码如下:
> setwd("F:\\CSDN\\blog")> states <- state.x77[,1:5]> cov(states) #计算方差和协方差 Population Income Illiteracy Life Exp MurderPopulation 19931683.7588 571229.7796 292.8679592 -407.8424612 5663.523714Income 571229.7796 377573.3061 -163.7020408 280.6631837 -521.894286Illiteracy 292.8680 -163.7020 0.3715306 -0.4815122 1.581776Life Exp -407.8425 280.6632 -0.4815122 1.8020204 -3.869480Murder 5663.5237 -521.8943 1.5817755 -3.8694804 13.627465> cor(states) #计算Pearson积差相关系数 Population Income Illiteracy Life Exp MurderPopulation 1.00000000 0.2082276 0.1076224 -0.06805195 0.3436428Income 0.20822756 1.0000000 -0.4370752 0.34025534 -0.2300776Illiteracy 0.10762237 -0.4370752 1.0000000 -0.58847793 0.7029752Life Exp -0.06805195 0.3402553 -0.5884779 1.00000000 -0.7808458Murder 0.34364275 -0.2300776 0.7029752 -0.78084575 1.0000000> cor(states,method = "spearman") #计算spearman等级相关系数 Population Income Illiteracy Life Exp MurderPopulation 1.0000000 0.1246098 0.3130496 -0.1040171 0.3457401Income 0.1246098 1.0000000 -0.3145948 0.3241050 -0.2174623Illiteracy 0.3130496 -0.3145948 1.0000000 -0.5553735 0.6723592Life Exp -0.1040171 0.3241050 -0.5553735 1.0000000 -0.7802406Murder 0.3457401 -0.2174623 0.6723592 -0.7802406 1.0000000> cor.test(states[,3],states[,5]) #进行相关性系数 Pearson's product-moment correlationdata: states[, 3] and states[, 5]t = 6.8479, df = 48, p-value = 1.258e-08alternative hypothesis: true correlation is not equal to 095 percent confidence interval: 0.5279280 0.8207295sample estimates: cor 0.7029752 > #cor.test()只能检验一种相关关系,psych包提供了更多的选择> #install.packages("psych")> library(psych)> corr.test(states,use = "complete")Call:corr.test(x = states, use = "complete")Correlation matrix Population Income Illiteracy Life Exp MurderPopulation 1.00 0.21 0.11 -0.07 0.34Income 0.21 1.00 -0.44 0.34 -0.23Illiteracy 0.11 -0.44 1.00 -0.59 0.70Life Exp -0.07 0.34 -0.59 1.00 -0.78Murder 0.34 -0.23 0.70 -0.78 1.00Sample Size [1] 50Probability values (Entries above the diagonal are adjusted for multiple tests.) Population Income Illiteracy Life Exp MurderPopulation 0.00 0.44 0.91 0.91 0.09Income 0.15 0.00 0.01 0.09 0.43Illiteracy 0.46 0.00 0.00 0.00 0.00Life Exp 0.64 0.02 0.00 0.00 0.00Murder 0.01 0.11 0.00 0.00 0.00 To see confidence intervals of the correlations, print with the short=FALSE option以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
用pandas计算相关系数计算相关系数用pandas,比如我想知道风速大小与风向紊乱(标准差来衡量)之间的相关系数,下面是代码:importpandasaspd
本文主要演示pandas中DataFrame对象corr()方法的用法,该方法用来计算DataFrame对象中所有列之间的相关系数(包括pearson相关系数、
自相关图是一个平面二维坐标悬垂线图。横坐标表示延迟阶数,纵坐标表示自相关系数偏自相关图跟自相关图类似,横坐标表示延迟阶数,纵坐标表示偏自相关系数自相关图与偏自相
矩阵概述R语言的实质实质上是与matlab差不多的,都是以矩阵为基础的在R语言中,矩阵(matrix)是将数据按行和列组织数据的一种数据对象,相当于二维数组,可
iResearch艾瑞咨询根据Searchmetrics2013年公布的数据显示,在Google平台影响搜索结果排名的关键因素中,社会化网络占比最高,相关系数排