5.6 多組數據分析及R實現
5.6.1 多組數據的統計分析
> group=read.csv("C:/Program Files/RStudio/002582.csv") > group=na.omit(group) #忽略缺失樣本 > summary(group) 時間 開盤 最高 2013/08/26: 1 Min. :13.6 Min. :13.9 2013/08/27: 1 1st Qu.:18.2 1st Qu.:18.5 2013/08/28: 1 Median :19.6 Median :19.9 2013/08/29: 1 Mean :20.2 Mean :20.6 2013/08/30: 1 3rd Qu.:21.6 3rd Qu.:22.0 2013/09/02: 1 Max. :35.0 Max. :37.0 (Other) :414 最低 收盤 Min. :13.5 Min. :13.6 1st Qu.:18.0 1st Qu.:18.2 Median :19.3 Median :19.6 Mean :19.8 Mean :20.2 3rd Qu.:21.3 3rd Qu.:21.6 Max. :34.0 Max. :34.6
函數var()應用在多組數據上,得到的計算結果是一個協方差陣,其每個元素是各個向量之間的協方差。使用指令cor(group)也得到相同結果。
> options(digits=3) > var(group) 時間 開盤 最高 最低 收盤 時間 NA NA NA NA NA 開盤 NA 13.2 13.8 12.6 13.3 最高 NA 13.8 14.6 13.2 14.0 最低 NA 12.6 13.2 12.1 12.8 收盤 NA 13.3 14.0 12.8 13.6
協方差的大小在一定程度上反映了變量之間的相互關系,但它還受變量本身度量單位的影響,因此我們還要計算相關系數來度量變量之間的線性相關程度。在R中使用函數cor()計算相關系數矩陣。
cor(x, y = NULL, use = "everything",method = c("pearson", "kendall", "spearman"))
其中,x,y是計算的對象,當x是一個數據框或列表時Y可以省略:use指定如何處理缺失樣本:method給出計算i哪一種相關系數:默認的皮爾遜(Pearson )系數度量線性相關性,如果數據呈現的不是線性關系,而是單調的,則可以用肯德爾(Kendall )或斯皮爾曼( Spearman)相關系數,它們描述的是秩相關性。
5.6.2多組數據的圖形分析
R中的函數lowess()通過加權多項式回歸對散點圖進行平滑,擬合一條非線性的曲線,但其只能適用於二維情況。與之類似的loess()用於處理多維情況。
lowess(x, y = NULL, f = 2/3, iter = 3, delta = 0.01 * diff(range(x)))
x,y指定兩個向量:f是平滑的跨度,值越大,曲線的平滑程度越高;iter控制應執行的迭代數,值越高平滑越精確,但使用較小的值會使程序跑得比較快。
> attach(group) > plot(最高~最低) > lines(lowess(最低,最高),col="red",lwd=2)
(2)等高線圖
有時候數據量很大,散點圖上的數據點就會非常集中,不容易看出變量的關系或趨勢,這就需要借助二維等高線圖來描述。首先利用程序包MASS中的函數kde2d()來估計出二維數據的密度函數,再利用函數contour()畫出密度的等高線圖。如果不想畫出圖上的數據標簽,可以將參數drawlabels=FALSE去掉。函數kde2d()的使用方法:
kde2d(x, y, h, n = 25, lims = c(range(x), range(y)))
其中x,y分別為橫軸和縱軸的數據;n指定每個方向上的網格點數量,可以是標量或長度為2的一個正數向量:參數lims表示橫縱軸的范圍。
> library(MASS) > ?kde2d > a=kde2d(最低,最高) > contour(a,col="blue",main="contour plot")
(3)矩陣散點圖
多組數據的圖形也可以用散點圖來展示,不同在於這里是矩陣散點圖。對於一個數據框,R中可以直接使用plot()命令或pairs()繪制矩陣散點圖。
> pairs(group)
(4)矩陣圖
在處理多組數據時,常將各組數據放在一起進行比較,matplot()可將各變量的散點圖放在同一個繪圖區域中。
> matplot(group,type="l",main="matplot")
(5)箱線圖
> boxplot(group,cex.axis=.6)
(6)星圖(雷達圖)
stars(x, full = TRUE, scale = TRUE, radius = TRUE,labels = dimnames(x)[[1]], locations = NULL,nrow = NULL, ncol = NULL, len = 1,key.loc = NULL, key.labels = dimnames(x)[[2]],key.xpd = TRUE,xlim = NULL, ylim = NULL, flip.labels = NULL,draw.segments = FALSE,col.segments = 1:n.seg, col.stars = NA, col.lines = NA,axes = FALSE, frame.plot = axes,main = NULL, sub = NULL, xlab = "", ylab = "",cex = 0.8, lwd = 0.25, lty = par("lty"), xpd = FALSE,mar = pmin(par("mar"),1.1+ c(2*axes+ (xlab != ""),2*axes+ (ylab != ""), 1, 0)),add = FALSE, plot = TRUE, ...)
(7)折線圖
需要自定義函數
(8)調和曲線圖
需要自定義函數