左手用R右手Python系列11——相關性分析
由於最近畢業論文纏身,一直都沒有太多時間和精力撰寫長篇的乾貨,但是呢學習的的腳步不能停止,今天跟大家盤點一下R語言與Python中到的相關性分析部分的常用函數。
常用的衡量隨機變數相關性的方法主要有三種:
- pearson相關係數;即皮爾遜相關係數,用於橫向兩個連續性隨機變數間的相關係數。
- spearman相關係數;即斯皮爾曼相關係數,用于衡量分類定序變數間的相關程度。
- kendall相關係數;即肯德爾相關係數,也是一種秩相關係數,不過它所計算的對象是分類變數。
R語言:
- cor
- cor.test
- corrplot
cor(x,y=NULL,use="everything",method= c("pearson","kendall","spearman"))
在R語言中,通常使用cor函數進行相關係數分析,可以分別指定向量,也可以指定給cor函數一個數據框。
- use函數指定處理缺失值的方式
- method是可選的三種相關係數計算方法。
這裡以diamonds數據集為例:
library("ggplot2")str(diamonds)
cor(diamonds[,c("carat","depth","price")])cor(diamonds[,c("carat","depth","price")],method= "pearson")
默認情況下使用的是pearson相關係數。
corrplot函數可以針對相關係數輸出的結果進行可視化:
library("corrplot")library("dplyr")cor(diamonds[,c("carat","depth","price")])%>%corrplot()
使用cor.test函數進行相關性的檢驗:
cor.test(x, y, #指定帶分析變數alternative = c("two.sided", "less", "greater"), #雙側檢驗,單側檢驗(默認雙側)method = c("pearson", "kendall", "spearman"), #相關性演算法(默認pearson法)exact = NULL, conf.level = 0.95, continuity = FALSE, ...)cor.test(diamonds$carat,diamonds$depth)cor.test(~carat+depth,diamonds)
以上兩種寫法都是支持的。
從結果可以看到,兩者幾乎不相關,pearson相關係數僅有0.02左右。
Pyhton:
import pandas as pdimport numpy as npdiamonds=pd.read_csv("D:/R/File/diamonds.csv",sep = ",",encoding = "utf-8")diamonds.info()
pandas中帶有相關係數函數pandas.corr
mydata=diamonds[["carat","depth","table","price"]]mydata.info()
mydata.corr() #可以直接給出數據框的相關係數矩陣mydata.corr()["carat"] #給出caret變數與其他變數之間的相關係數mydata["carat"].corr(mydata["depth"]) #計算"carat"與"depth"之間的相關係數
與R語言中一樣,pandas中內置的相關係數演算法也是針對針對數值型變數的pearson法。
mydata.corr(method="pearson") mydata.corr(method="pearson")["carat"] mydata["carat"].corr(method="pearson",mydata["depth"])
method也可以指定spearman法和kendall法計算相關係數。
本文小結:
R語言:
- cor
- cor.test
- corplot
Python:
pandas.corr
最近上線的新課程,R語言在商務場景中的應用,內容適合想要通過ggplot2深入學習R語言數據可視化的愛好者,錄播已經所有代碼和學習資源已經上傳了!
已經有接近200位小夥伴兒們在修習了,報名參加還可以獲取小魔方的過往學習筆記、歷史案例代碼哦!
R語言在商務場景下的應用
推薦閱讀:
※python 爬蟲 圖片抓取問題,有的網站中的圖片不能抓取?
※千里挑一的我乎妹子大V排行榜(數據初探1)
※Python中那些神一樣的代碼
※Python3.6正式版要來了,你期待哪些新特性?
※神奇的yield