R語言實戰(三)基本圖形與基本統計分析


本文對應《R語言實戰》第6章:基本圖形;第7章:基本統計分析

 

================================================================================================================================================== 

本章討論的圖形,主要用於分析數據前,對數據的初步掌握。想要對數據有一個初步的印象,最好的方式就是觀察它,也就是將數據可視化。在這個過程中,我們不必要過於糾結圖形是否漂亮美觀,而重點關注各個簡單圖形的含義:觀察數據的哪個方面時需要用到哪些圖形。

 

條形圖:主要展示類別型變量的分布(頻數)

barplot(height)

  

簡單條形圖

堆砌條形圖和分組條形圖

均值條形圖(用aggregate()函數處理后,得到各組均值、中位值等,即經過折疊的數據)

棘狀圖(對堆砌條形圖進行重縮放,將不同分組高度歸一化,用於比較不同組內相同分類占比的不同。package: vcd:: spine())

 

餅圖:不推薦使用,因為相對於面積,人對長度的判斷更精確。

pie(x, labels)

 

直方圖:展示了連續型變量的分布情況

hist(x)

  

可以在直方圖上添加核密度圖或者正態分布曲線輔助觀察數據分布

 

核密度圖:也可以用來觀察連續型變量分布,可以在直方圖上疊加

#直接繪圖:
plot(density(x))

#在直方圖上疊加:
hist(mtcars$mpg)
#如果數據中有許多結(tie, 數據中出現相同的值)用以下語句打散
rug(jitter(mtcars$mpg))
#添加核密度曲線
lines(density(mtcars$mpg))

  


箱線圖:通過繪制繪制連續型變量的五數總括,即最小值、下四分位數、中位數、上四分位數、最大值,描述連續型變量分布 

boxplot(x)

  

並列箱線圖:跨組比較(單因子或交叉因子。交叉因子:formula形如mpg ~ am.f * cyl.f)

boxplot(formula, data = dataframe)

  

小提琴圖:是箱線圖的變種,由箱線圖與核密度圖結合而來,package: vioplot

並不流行

 

點圖:提供了一種在簡單水平刻度上繪制大量有標簽值的方法

dotchart(x, labels = )

  

對於少量數據有較為顯著的洞察力,對於大量數據的實用性較差

 

================================================================================================================================================== 

基本統計分析:

描述性統計分析

#極值、均值、分位數
summary()
 
#變量與觀測的數量、缺失值和唯一值的數量、平均值、分位數、五個最大最小值
library(Hmisc)
describe()
 
#對數據框或時間序列進行分析
library(pastecs)
stat.desc(x, basic = TRUE, desc = TRUE, norm = FALSE, p = 0.95)
#basic = TRUE(默認),計算所有值、空值、缺失值數量,最值、值域、總和
#desc = TRUE(默認),中位數、平均數及其標准誤、平均數置信度為95%的置信區間、方差、標准差以及變異系數
#norm = TRUE(不是默認),返回正態分布統計量,包括偏度和峰度

#擴展
#非缺失值的數量、平均數、標准差、中位數、截尾均值、絕對中位差、最值、值域、偏度、峰度、平均值的標准誤
library(psych)
describe()

  


分組計算描述性統計量 

#by()函數
vars <- c(“mpg”, “hp”, “wt”)
dstats <- function(x) (c(mean = mean(x), sd = sd(x)))
by(mtcars[vars], mtcars$am, dstats)
 
#自定義統計量
library(doBy)
summaryBy(formula, data = dataframe, FUN = function)

#概述統計量
library(psych)
describe.by(data, variables)
 
#package reshape
#melt() cast()簡潔但是需要熟練使用

  


頻數表和列聯表 

table(var1, var2, …, varN)

使用N個類別型變量創建一個N維列聯表

xtabs(formula, data)

根據一個公式和一個矩陣或一個數據框創建一個N維列聯表

prop.table(table, margins)

依margins定義的邊際列表將表中條目表示為分數形式

margin.table(table, margins)

依margins定義的邊際列表計算表中條目的和

addmargins(table, margins)

將概述邊margins(默認是求和結果)放入表中

ftable(table)

創建一個緊湊的“平鋪”式列聯表

注意:table()函數默認忽略缺失值(NA)要將NA視為一個有效的類別,需要設置參數useNA = “ifany”

 

生成二維列聯表的一個更好的方式,使用library: gmodels:: CrossTable()函數

 

多維列聯表:以上函數均可以推廣到高維情況,推薦使用ftable()函數

 

獨立性檢驗:

對二維列聯表的行變量與列變量進行獨立性檢驗(檢驗對象為列聯表)

#卡方獨立性檢驗
#假設相互獨立,若p<0.05,拒絕假設(也就是相關)
chisq.test()
 
#Fisher精確檢驗
#假設:邊界固定的列聯表中行和列是相互獨立的
#注意不能用於2*2列聯表
fisher.test()

#Cochran-Mantel-Haenszel檢驗
#假設:兩個名義變量在第三個變量的每一層中都是條件獨立的(即不存在三階交互作用)
mantelhaen.test()

  


相關性度量: 

如果獨立性檢驗通過(拒絕假設),繼續度量相關性的強弱

 

 

相關

Pearson積差相關系數衡量了兩個定量變量之間的線性相關程度

Spearman等級相關系數衡量分級定序變量之間的相關程度

Kendall’s Tau相關系數是一種非參數的等級相關度量

#計算相關系數
cor()
#計算協方差
cov()

  


偏相關:在控制一個或多個定量變量時,另外兩個定量變量之間的相互關系 

library(ggm)
pcor(u, S)

  


其他類型的相關 

#計算混合相關矩陣,包括數值型變量之間的Pearson相關系數、數值型變量和有序變量之間的多系列相關系數
library(polycor)
hector()

  


相關性的顯著性檢驗: 

#檢驗一種相關關系
cor.test(x, y, alternative = , method = ) 

#一次作出相關矩陣及顯著性檢驗
library(psych)
corr.test()

  


其他顯著性檢驗: 

在多元正態性的假設下,ggm包中pcor.test()函數可以用來檢驗在控制一個或多個額外變量時,兩個變量之間的條件獨立性。

 

 

t檢驗

#獨立樣本t檢驗
t.test(y ~ x, data)
#y為數值型變量,x為二分變量
t.test(y1, y2)
#y1和y2為數值型變量,即各組的結果變量
 
#非獨立樣本t檢驗(假定組間的差異呈正態分布)
t.test(y1, y2, paired = TRUE)

  


 多於兩組的情況:如果能夠假設數據是從正態總體中獨立抽樣而得的,就可以使用方差分析(ANOVA)

 

組間差異的非參數檢驗

兩組的比較:若獨立,則可以使用Wilcoxon秩和檢驗

wilcox.test(y ~ x, data)
wilcox.test(y1, y2)

  

 

多於兩組的比較:無法滿足ANOVA的假設時,采用非參數方法。

如果各組獨立,可以使用Kruskal-Wallis檢驗;如果各組不獨立,使用Friedman檢驗。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM