基本的R包已經實現了傳統多元統計的很多功能,然而CRNA的許多其它包提供了更深入的多元統計方法,下面要綜述的包主要分為以下幾個部分:
1) 多元數據可視化(Visualising multivariate data):
繪圖方法:
基本畫圖函數(如:pairs()、coplot())和lattice包里的畫圖函數(xyplot()、splom())可以畫成對列表的二維散點圖,3維密度圖。car包里的scatterplot.matrix()函數提供更強大的二維散點圖的畫法。cwhmisc包集合里的cwhplot包的pltSplomT()函數類似pair()畫散點圖矩陣,而且可以在對角位置畫柱狀圖或密度估計圖。除此之外,scatterplot3d包可畫3維的散點圖,aplpack包里bagplot()可畫二變量的boxplot,spin3R()可畫可旋轉的三維點圖。misc3d包有可視化密度的函數。YaleToolkit包提供許多多元數據可視化技術,agsemisc也是這樣。更特殊的多元圖包括:aplpack包里的faces()可畫Chernoff’s face;MASS包里的parcoord()可畫平行坐標圖(矩陣的每一行畫一條線,橫軸表示矩陣的每列);graphics包里的stars()可畫多元數據的星狀圖(矩陣的每一行用一個星狀圖表示)。ade4包里的mstree()和vegan包里的spantree()可畫最小生成樹。calibrate包支持雙變量圖和散點圖,chplot包可畫convex hull圖。geometry包提供了和qhull庫的接口,由convexhulln()可給出相應點的索引。ellipse包可畫橢圓,也可以用plotcorr()可視化相關矩陣。denpro包為多元可視化提供水平集樹形結構(level set trees)。graphics包里的mosaicplot()和vcd包里的mosaic()函數畫馬賽克圖(mosaic plot)。gclus包提供了針對聚類的散點圖和平行坐標圖。rggobi包和DescribeDisplay包是GGobi的接口,DescribeDisplay的圖可達到出版質量的要求;xgobi包是XGobi和XGvis的接口,可實現動態交互的圖。最后,iplots包提供強大的動態交互圖,尤其是平行坐標圖和馬賽克圖。seriation包提供seriation方法,能重新排列矩陣和系統樹。
數據預處理:
AIS包提供多元數據的初步描述函數。Hmisc包里的summarize()和summary.formula()輔助描述數據,varclus()函數可做聚類,而dataRep()和find.matches()找給定數據集的典型數據和匹配數據。KnnFinder包里的nn()函數用kd-tree找相似變量的個數。dprep包為分類提供數據預處理和可視化函數,如:檢查變量冗余性、標准化。base包里的dist()和cluster包里的daisy()函數提供距離計算函數;proxy包提供更多的距離測度,包括矩陣間的距離。simba包處理已有數據和缺失數據,包括相似性矩陣和重整形。
2) 假設檢驗(Hypothesis testing):
ICSNP包提供霍特林(Hotellings)T2檢驗和許多非參檢驗方法,包括基於marginal ranks的位置檢驗(location test),計算空間中值和符號,形狀估計。cramer包做兩樣本的非參檢驗,SpatialNP可做空間符號和秩檢驗。
3) 多元分布(Multivariate distributions):
描述統計(Descriptive measures):
stats包里的cov()和and cor()分別估計協方差和相關系數。ICSNP包提供幾種數據描述方法,如:spatial.median()估計空間中值,其它的函數估計scatter。MASS包里的cov.rob()提供更健壯的方差/協方差矩陣估計。covRobust包用最近鄰方差估計法估計協方差。robustbase包的covMCD()估計協方差和covOGK()做Orthogonalized Gnanadesikan-Kettenring。rrcov包提供可擴展和穩健的估計函數covMcd()、covMest()。corpcor包可計算大規模的協方差和偏相關矩陣。
密度估計和模擬(Densities (estimation and simulation)):
MASS包的mvrnorm()產生多元正態分布的隨機數。Mvtnorm包有多元t分布和多元正態分布的概率和分位數函數,還可計算多元正態分布的密度函數。mvtnormpcs包提供基於Dunnett的函數。mnormt包提供元t分布和多元正態分布的密度和分布函數,並可產生隨機數。sn包提供多元偏t分布和偏正態分布的密度、分布、隨機數函數。delt包提供了許多估計多元密度的函數方法,如:CART和貪婪方法。CRAN的Cluster任務列表(http://cran.r-project.org/web/views/Cluster.html)有更全面的信息,ks包里的rmvnorm.mixt()和dmvnorm.mixt()函數產生隨機數和估計密度,bayesm包里有多種擬合方法。很多地方都提供了模擬Wishart分布的函數,如:bayesm包里的rwishart(),MCMCpack包里的rwish(),而且MCMCpack包還有密度函數dwish()。KernSmooth 包里的bkde2D()和MASS包的kde2d()做分箱(binned)或不分箱二維核密度估計。ks包也像ash和GenKern包樣可做核平滑(kernel smoothing)。prim包用法找高維多元數據的高密度區域,feature包可計算多元數據的顯著特征。
正態檢驗(Assessing normality):
mvnormtest包提供Shapiro-Wilks檢驗的多元數據延伸方法,mvoutlier包檢測多元離群點(outlier),ICS包可檢驗多元正態分布。energy 包里的mvnorm.etest()基於E統計量做正態檢驗,k.sample()檢驗多個數據是否來自同一分布。dprep 包里的mardia()用Mardia檢驗正態性。stats包里的mauchly.test()可檢驗Wishart分布的協方差矩陣。
連接函數(Copulas):
copula包提供常規的copula函數的程序,包括:normal, t, Clayton, Frank, Gumbel。fgac包提供generalised archimedian copula,mlCopulaSelection包可做二變量的copula。
4) 線形模型(Linear models):
stats包里的lm()可做多元線形模型,anova.mlm()比較多個多元線形模型,manova()做多元方差分析(MANOVA)。sn包的msn.mle()和 and mst.mle()可擬合多元偏正態和偏t分布模型。pls包提供偏最小二乘回歸(PLSR)和主成分回歸;ppls包可做懲罰偏最小二乘回歸;dr包提供降維回歸方法,如.:片逆回歸法(Sliced Inverse Regression)、片平均方差估計(sliced average variance estimation)。plsgenomics包做基於偏最小二乘回歸的基因組分析。relaimpo包可評估回歸參數的相對重要性。
5) 投影方法(Projection methods):
主成分(Principal components):
stats包的prcomp()(基於svd())和princomp()(基於eigen())能計算主成分。sca包做單分量分析。nFactors可評價碎石圖(Scree plot),paran包可評估主成分分析得到的主成分和因子分析得到的因子。pcurve包做主曲線(Principal Curve)分析和可視化。gmodels包提供適合大矩陣的fast.prcomp()和fast.svd()。kernlab包里的kpca()用核方法做非線性的主成分分析。pcaPP包用投影尋蹤(projection pursuit)法計算穩健/魯棒(robust)主成分。amap包的acpgen()和acprob()函數分別針對廣義(generalized)和穩健(robust)主成分分析。主成分在很多方面也有相應的應用,如:涉及生態的ade4包,感官的SensoMinR包。psy包里有用於心理學的各種程序,與主成分相關的有:sphpca()用球形直觀表示相關矩陣,類似於3D的PCA;fpca()圖形展示主成分分析的結果,而且允許某些變量間有相關性;scree.plot()圖形展示相關或協方差矩陣的特征值。PTAk包做主張量分析(Principal Tensor Analysis)。smatr包提供關於異速生長(allometry)的函數。
典型相關(Canonical Correlation):
stats包里的cancor()是做典型相關的函數。kernlab包提供更穩健的核方法kcca()。concor包提供了許多concordance methods。
冗余度分析(Redundancy Analysis):
calibrate包里的rda()函數可做冗余度分析和典型相關。fso包提供了模糊集排序(Ordination)方法。
獨立成分(Independent Components):
fastICA包用fastICA算法做獨立成分分析(ICA)和投影尋蹤分析(Projection Pursuit),mlica包提供獨立成分分析的最大似然擬合,PearsonICA包用基於互信息的打分函數分離獨立信號。ICS包能執行不變坐標系(invariant coordinate system)和獨立成分分析(independent components)。JADE包提供就JADE算法的接口,而且可做一些 ICA。
普魯克分析(Procrustes analysis):
vegan包里的procrustes()可做普魯克分析,也提供排序(ordination)函數。更一般的普魯克分析可由FactoMineR包里的GPA()實現。
6) 主坐標/尺度方法(Principal coordinates / scaling methods):
stats包的cmdscale()函數執行傳統的多維尺度分析(multidimensional scaling,MDS)(主坐標分析Principal Coordinates Analysis),MASS包的sammon()和isoMDS()函數分別執行Sammon和Kruskal非度量多維尺度分析。vegan包提供非度量多維尺度分析的包裝(wrappers)和后處理程序。
7) 無監督分類(Unsupervised classification):
聚類分析:
CRAN的Cluster任務列表全面的綜述了R實現的聚類方法。stats里提供等級聚類hclust()和k-均值聚類kmeans()。cluster包里有大量的聚類和可視化技術,clv包里則有一些聚類確認程序,e1071包的classAgreement()可計算Rand index比較兩種分類結果。Trimmed k-means聚類分析可由trimcluster包實現,聚類融合方法(Cluster Ensembles)由clue包實現,clusterSim包能幫助選擇最佳的聚類,hybridHclust包提供一些混合聚類方法。energy包里有基於E統計量的距離測度函數edist()和等級聚類方法hclust.energy()。LLAhclust包提供基於似然(likelihood linkage)方法的聚類,也有評定聚類結果的指標。fpc包里有基於Mahalanobis距離的聚類。clustvarsel包有多種基於模型的聚類。模糊聚類(fuzzy clustering)可在cluster包和hopach包里實現。Kohonen包提供用於高維譜(spectra)或模式(pattern)的有監督和無監督的SOM算法。clusterGeneration包幫助模擬聚類。CRAN的Environmetrics任務列表里也有相關的聚類算法的綜述。mclust包實現了基於模型的聚類,MFDA包實現了功能數據的基於模型的聚類。
樹方法:
CRAN的MachineLearning任務列表有對樹方法的細節描述。分類樹也常常是重要的多元方法,rpart包正是這樣的包,rpart.permutation包還可以做rpart()模型的置換(permutation)檢驗。TWIX包的樹可以外部剪枝。hier.part包分割多元數據集的方差。mvpart包可做多元回歸樹,party包實現了遞歸分割(recursive partitioning),rrp包實現了隨機遞歸分割。caret包可做分類和回歸訓練,進而caretLSF包實現了並行處理。kknn包的k-近鄰法可用於回歸,也可用於分類。
8) 有監督分類和判別分析(Supervised classification and discriminant analysis):
MASS包里的lda()和qda()分別針對線性和二次判別分析。mda包的mda() and fda()允許混合和更靈活的判別分析,mars()做多元自適應樣條回歸(multivariate adaptive regression splines),bruto()做自適應樣條后退擬合(adaptive spline backfitting)。earth包里也有多元自適應樣條回歸的函數。rda包可用質心收縮法(shrunken centroids regularized discriminant analysis)實現高維數據的分類。VR的class包的knn()函數執行k-最近鄰算法,knncat包里有針對分類變量的k-最近鄰算法。SensoMineR包的FDA()用於因子判別分析。許多包結合了降維(dimension reduction)和分類。klaR包可以做變量選擇,可處理多重共線性,還有可視化函數。superpc包利用主成分做有監督的分類,classPP包則可為其做投影尋蹤(projection pursuit),gpls包用廣義偏最小二乘做分類。hddplot包用交叉驗證的線性判別分析決定最優的特征個數。supclust包可以根據芯片數據做基因的監督聚類。ROCR提供許多評估分類執行效果的方法。predbayescor包可做朴素貝葉斯(naïve Bayes)分類。關於監督分類的更多信息可以看MachineLearning任務列表。
9) 對應分析(Correspondence analysis):
MASS包的corresp()和mca()可以做簡單和多重對應分析。ca包提供單一、多重和聯合(joint)對應分析。ade4包的ca()和mca()分別做一般的和多重對應分析。vegan包里也有類似的函數。cocorresp可實現兩個矩陣間的co-correspondence分析。FactoMineR 包的CA()和MCA()函數也能做類似的簡單和多重對應分析,還有畫圖函數。homals執行同質分析(homogeneity)。
10) 前向查找(Forward search):
Rfwdmv包執行多元數據的前向查找。
11) 缺失數據(Missing data):
mitools包里有缺失數據的多重估算(multiple imputation)的函數, mice包用chained equations實現了多重估算,mvnmle包可以為多元正態數據的缺失值做最大似然估計(ML Estimation),norm包提供了適合多元正態數據的估計缺失值的期望最大化算法(EM algorithm),cat包允許分類數據的缺失值的多重估算,mix包適用於分類和連續數據的混合數據。pan包可為面版數據(panel data)的缺失值做多重估算。VIM包做缺失數據的可視化和估算。Hmisc包的aregImpute()和transcan()提供了其它的估算缺失值方法。EMV包提供了knn方法估計缺失數據。monomvn包估計單調多元正態數據的缺失值。
12) 隱變量方法(Latent variable approaches):
stats包的factanal()執行最大似然因子分析,MCMCpack包可做貝葉斯因子分析。GPArotation包提供投影梯度(Gradient Projection)旋轉因子法。FAiR包用遺傳算法作因子分析。ifa包可用於非正態的變量。sem包擬合線形結構方程模型。ltm包可做隱含式語義分析 (Latent semantic analysis),eRm包則可擬合Rasch模型(Rasch models)。FactoMineR包里有很多因子分析的方法,包括:MFA()多元因子分析,HMFA()等級多元因子分析,ADFM()定量和定性數據的多元因子分析。tsfa包執行時間序列的因子分析。poLCA包針對多分類變量(polytomous variable)做潛類別分析(Latent Class Analysis)。
13) 非高斯數據建模(Modelling non-Gaussian data):
bivpois包建模Poisson分布的二變量。mprobit包提供了適合二元和順序響應變量的多元概率模型。MNP包實現了Bayesian多元概率模型。polycor包可計算多組相關(olychoric correlation)和四分相關(tetrachoric correlation)矩陣。bayesm包里有多種模型,如:表面非相關回歸(Seemingly unrelated Regression),多元logit/probit模型, 工具變量法(Instrumental Variables)。VGAM包里有:廣義線形和可加模型(Vector Generalised Linear and Additive Models),減秩回歸(Reduced Rank regression)。
14) 矩陣處理(Matrix manipulations):
R作為一種基於向量和矩陣的語言,有許多處理矩陣的強有力的工具,由包Matrix和,SparseM實現。matrixcalc包增加了矩陣微積分的功能。spam包提供了更深入的針對稀疏矩陣的方法。
15) 其它(Miscellaneous utitlies):
DEA包執行數據包絡分析(data envelopment analysis,DEA)。abind包組合多維array。Hmisc
包的mApply()擴充了apply()的功能。除了前面描述的功能,sn包還未偏正態和偏t分布提供邊緣化(marginalisation)、仿射變換(affine transformations)等。SharedHT2包執行芯片數據的Hotelling's T2檢驗。panel包里有面版數據(panel data)的建模方法。mAr包可做向量自回歸模型(vector auto-regression),MSBVAR包里有貝葉斯向量自回歸模型。Hmisc包的rm.boot()函數bootstrap重復測量試驗(Repeated Measures Models)。compositions包提供復合數據分析(compositional data analysis)。
cramer包為兩樣本數據做多元非參Cramer檢驗。psy里有許多心理學的常用方法。cwhmisc包集合的cwhmath包里有許多有趣的功能,如各種旋轉函數。desirability包提供了基於密度函數的多變量最優化方法。geozoo包可以畫geozoo包里定義的幾何對象。