R語言︱常用統計方法包+機器學習包(名稱、簡介)
一、一些函數包大匯總
轉載於:http://www.dataguru.cn/thread-116761-1-1.html
時間上有點過期,下面的資料供大家參考
基本的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包里定義的幾何對象。
————————————————————————————————————————————————
二、Machine Learning & Statistical Learning
以下所有資訊都來自與VRAN task view的 Machine Learning & Statistical Learning
轉載於:https://www.douban.com/note/500637572/
機器學習是計算機科學和統計學的邊緣交叉領域,R關於機器學習的包主要包括以下幾個方面:
1)神經網絡(Neural Networks):
nnet包執行單隱層前饋神經網絡,nnet是VR包的一部分(http://cran.rproject.org/web/packages/VR/index.html)。
2)遞歸拆分(Recursive Partitioning):
遞歸拆分利用樹形結構模型,來做回歸、分類和生存分析,主要在rpart包(http://cran.r-project.org/web/packages/rpart/index.html)和tree包(http://cran.r-project.org/web/packages/tree/index.html)里執行,尤其推薦rpart包。Weka里也有這樣的遞歸拆分法,如:J4.8, C4.5, M5,包Rweka提供了R與Weka的函數的接口(http://cran.r-project.org/web/packages/RWeka/index.html)。
party包提供兩類遞歸拆分算法,能做到無偏的變量選擇和停止標准:函數ctree()用非參條件推斷法檢測自變量和因變量的關系;而函數mob()能用來建立參數模型(http://cran.r-project.org/web/packages/party/index.html)。另外,party包里也提供二分支樹和節點分布的可視化展示。
mvpart包是rpart的改進包,處理多元因變量的問題(http://cran.r-project.org/web/packages/mvpart/index.html)。rpart.permutation包用置換法(permutation)評估樹的有效性(http://cran.r-project.org/web/packages/rpart.permutation/index.html)。knnTree包建立一個分類樹,每個葉子節點是一個knn分類器(http://cran.r-project.org/web/packages/knnTree/index.html)。LogicReg包做邏輯回歸分析,針對大多數自變量是二元變量的情況(http://cran.r-project.org/web/packages/LogicReg/index.html)。maptree包(http://cran.r-project.org/web/packages/maptree/index.html)和pinktoe包(http://cran.r-project.org/web/packages/pinktoe/index.html)提供樹結構的可視化函數。
3)隨機森林(Random Forests):
randomForest 包提供了用隨機森林做回歸和分類的函數(http://cran.r-project.org/web/packages/randomForest/index.html)。ipred包用bagging的思想做回歸,分類和生存分析,組合多個模型(http://cran.r-project.org/web/packages/ipred/index.html)。party包也提供了基於條件推斷樹的隨機森林法(http://cran.r-project.org/web/packages/party/index.html)。varSelRF包用隨機森林法做變量選擇(http://cran.r-project.org/web/packages/varSelRF/index.html)。
4)Regularized and Shrinkage Methods:
lasso2包(http://cran.r-project.org/web/packages/lasso2/index.html)和lars包(http://cran.r-project.org/web/packages/lars/index.html)可以執行參數受到某些限制的回歸模型。elasticnet包可計算所有的收縮參數(http://cran.r-project.org/web/packages/elasticnet/index.html)。glmpath包可以得到廣義線性模型和COX模型的L1 regularization path(http://cran.r-project.org/web/packages/glmpath/index.html)。penalized包執行lasso (L1) 和ridge (L2)懲罰回歸模型(penalized regression models)(http://cran.r-project.org/web/packages/penalized/index.html)。pamr包執行縮小重心分類法(shrunken centroids classifier)(http://cran.r-project.org/web/packages/pamr/index.html)。earth包可做多元自適應樣條回歸(multivariate adaptive regression splines)(http://cran.r-project.org/web/packages/earth/index.html)。
5)Boosting :
gbm包(http://cran.r-project.org/web/packages/gbm/index.html)和boost包(http://cran.r-project.org/web/packages/boost/index.html)執行多種多樣的梯度boosting算法,gbm包做基於樹的梯度下降boosting,boost包包括LogitBoost和L2Boost。GAMMoost包提供基於boosting的廣義相加模型(generalized additive models)的程序(http://cran.r-project.org/web/packages/GAMMoost/index.html)。mboost包做基於模型的boosting(http://cran.r-project.org/web/packages/mboost/index.html)。
6)支持向量機(Support Vector Machines):
e1071包的svm()函數提供R和LIBSVM的接口 (http://cran.r-project.org/web/packages/e1071/index.html)。kernlab包為基於核函數的學習方法提供了一個靈活的框架,包括SVM、RVM……(http://cran.r-project.org/web/packages/kernlab/index.html) 。klaR 包提供了R和SVMlight的接口(http://cran.r-project.org/web/packages/klaR/index.html)。
7)貝葉斯方法(Bayesian Methods):
BayesTree包執行Bayesian Additive Regression Trees (BART)算法(http://cran.r-project.org/web/packages/BayesTree/index.html,http://www-stat.wharton.upenn.edu/~edgeorge/Research_papers/BART%206--06.pdf)。tgp包做Bayesian半參數非線性回歸(Bayesian nonstationary, semiparametric nonlinear regression)(http://cran.r-project.org/web/packages/tgp/index.html)。
8)基於遺傳算法的最優化(Optimization using Genetic Algorithms):
gafit包(http://cran.r-project.org/web/packages/gafit/index.html)和rgenoud包(http://cran.r-project.org/web/packages/rgenoud/index.html)提供基於遺傳算法的最優化程序。
9)關聯規則(Association Rules):
arules包提供了有效處理稀疏二元數據的數據結構,而且提供函數執Apriori和Eclat算法挖掘頻繁項集、最大頻繁項集、閉頻繁項集和關聯規則(http://cran.r-project.org/web/packages/arules/index.html)。
10)模型選擇和確認(Model selection and validation):
e1071包的tune()函數在指定的范圍內選取合適的參數(http://cran.r-project.org/web/packages/e1071/index.html)。ipred包的errorest()函數用重抽樣的方法(交叉驗證,bootstrap)估計分類錯誤率(http://cran.r-project.org/web/packages/ipred/index.html)。svmpath包里的函數可用來選取支持向量機的cost參數C(http://cran.r-project.org/web/packages/svmpath/index.html)。ROCR包提供了可視化分類器執行效果的函數,如畫ROC曲線(http://cran.r-project.org/web/packages/ROCR/index.html)。caret包供了各種建立預測模型的函數,包括參數選擇和重要性量度(http://cran.r-project.org/web/packages/caret/index.html)。caretLSF包(http://cran.r-project.org/web/packages/caretLSF/index.html)和caretNWS(http://cran.r-project.org/web/packages/caretNWS/index.html)包提供了與caret包類似的功能。
11)統計學習基礎(Elements of Statistical Learning):
書《The Elements of Statistical Learning: Data Mining, Inference, and Prediction 》(http://www-stat.stanford.edu/~tibs/ElemStatLearn/)里的數據集、函數、例子都被打包放在ElemStatLearn包里(http://cran.r-project.org/web/packages/ElemStatLearn/index.html)。
12)R統計軟件的Lars算法的軟件包提供了Lasso算法。根據模型改進的需要,數據挖掘工作者可以借助於Lasso算法,利用AIC准則和BIC准則精煉簡化統計模型的變量集合,達到降維的目的。因此,Lasso算法是可以應用到數據挖掘中的實用算法。glasso(graphical lasso)是lasso方法的一種擴展,采用加罰的極大似然方法估計變量間協方差矩陣的逆矩陣(這個逆矩陣在圖模型中被稱為Concentration Matrix或者Precision Matrix),加以適當整理之后,可以得到變量間的稀疏化的偏相關系數矩陣,其中的零元素表示了變量間的條件獨立關系。我們可以利用其中的非零元素生成圖模型。