基本的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包里定义的几何对象。

参考文献:http://blog.sina.com.cn/s/blog_7404f71e0102v7z8.html

ML—R常用多元统计分析包(持续更新中……)的更多相关文章

  1. IntelliJ IDEA入门之常用配置以及问题解决(持续更新中)

    软件版本: IntelliJ IDEA 2019.1.1(Ultimate Edition) 运行环境: JDK1.8, Tomcat8.0, Maven3.6 我们在学习新的无论是jar包, 框架, ...

  2. ORACLE常用函数汇总(持续更新中....)

    在使用ORACLE过程中,把一些常用的函数的相关用法,注意事项进行简单的汇总,便于自己查询参考. DBMS_RANDOM包 dbms_random是一个可以生成随机数值或者字符串的程序包.这个包有in ...

  3. Vim常用指令总结(持续更新中)

    1 模式变更 命令 说明 a(append)/i(insert) 普通模式→插入模式 : 普通模式→命令行模式 ESC或者Ctrl 插入模式→普通模式 R(Replace)/Insert两次 普通模式 ...

  4. Linux常用命令1-50(持续更新中)

    1:echo $PATH  (打印出PATH变量的值) 不同用户下面的PATH值有可能不一样 echo   有显示打印的意思 $         表示后面的是一个变量的意思 PATH  变量 /usr ...

  5. Linux常用命令汇总(持续更新中)

    命令 说明 注意点 cat access.log | wc -l 统计行数 awk命令可以做到同样的想过:cat access.log | awk 'END {print NR}' grep vnc  ...

  6. 【Oracle】Oracle常用命令整理(持续更新中)

    一些常用的操作命令记录 SQLPlus连接 sqlplus {username}/{password}@{ip}:{port}/{sid} 创建用户 create user testuser iden ...

  7. iOS开发常用第三方开源框架 持续更新中...

    键盘管理 TPKeyboardAvoiding IQKeyboardManager(1.2.8) 弹窗HUD MBProgressHUD(0.9.2) SVProgressHUD UIView+Toa ...

  8. redis配置文件redis.conf翻译、解释以及常用注意事项(持续更新中...)

    # Redis configuration file example. #Redis 配置文件的示例 #如何利用配置文件启动Redis # Note that in order to read the ...

  9. 常用shell脚本(持续更新中)

    1. 写一个shell脚本来得到当前的日期,时间,用户名和当前工作目录. 答案 : 输出用户名,当前日期和时间,以及当前工作目录的命令就是logname,date,who i am和pwd. #!/b ...

随机推荐

  1. 35道Redis面试题

    1.什么是redis?   Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数 ...

  2. 微软职位内部推荐-Senior Dev Lead - SharePoint

    微软近期Open的职位: SharePoint is a multi-billion dollar enterprise business that has grown from an on-prem ...

  3. BFS和DFS算法

    昨晚刚昨晚华为笔试题,用到了BFS和DFS,可惜自己学艺不精,忘记了实现原理,现在借用大佬写的内容给自己做个提高 转自:https://www.jianshu.com/p/70952b51f0c8 图 ...

  4. 构建之法-软件测试+质量保障+稳定和发布阶段+IT行业的创新+人、绩效和职业道德

    第十三章(软件测试) 要知道为什么有软件测试,首先需要知道软件开发,软件开发者一般都很难检查出自己的错误,所以才需要另外一个人测试,所以软件测试就诞生了. 书本介绍了很多测试方法,各有各的优缺点,至于 ...

  5. 2-Python3从入门到实战—基础之运算符

    Python从入门到实战系列--目录 Python语言支持以下类型的运算符: 算术运算符 比较(关系)运算符 赋值运算符 逻辑运算符 位运算符 成员运算符 身份运算符 运算符优先级 算术运算符 Pyt ...

  6. Alpha 冲刺六

    团队成员 051601135 岳冠宇 051604103 陈思孝 031602629 刘意晗 031602248 郑智文 031602234 王淇 会议照片 今天没有进行站立式会议,由于团队内有些细节 ...

  7. 课堂final发布

    项目组名:奋斗吧兄弟 小组成员:黄兴.李俞寰.栾骄阳.王东涵.杜桥 今天6个小组在课上进行了Final发布,以下是我的一些看法: 1.Nice团队的约跑app: 今天Nice团队给我的最突出的印象就是 ...

  8. PAT 甲级 1030 Travel Plan

    https://pintia.cn/problem-sets/994805342720868352/problems/994805464397627392 A traveler's map gives ...

  9. delphi中登录界面关闭直接现实主界面是怎么回事?

    修改工程文件: Application.Initialize; Application.CreateForm(TmainForm, mainForm); Application.ShowMainFor ...

  10. 洛谷 P2607 [ZJOI2008]骑士 解题报告

    P2607 [ZJOI2008]骑士 题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一 ...