R--基本统计分析方法(包及函数)

摘要:目前经典的统计学分析方法主要有回归分析,Logistic回归,决策树,支持向量机,聚类分析,关联分析,主成分分析,对应分析,因子分析等,那么对于这些经典的分析方法在R中的使用主要有那些程序包及函数呢?
 
1、线性模型~回归分析:
【包】:stats  
【函数】:lm(formula, data,  ...)
逐步回归:step(lm(formula, data,  ...))
回归诊断:influence.measure(lm(formula, data,  ...))
多重共线性:kappa(XX,exact=T), eigen(XX)
自相关检验:一阶:dwtest(y~x) 多阶:bgtest(y~x,order=2,type=”Chisq”)
【备注】:1)stats包里的lm()可做多元线形模型,
anova.mlm()比较多个多元线形模型,
manova()做多元方差分析(MANOVA)。
2)sn包的msn.mle()和 and mst.mle()可拟合多元偏正态和偏t分布模型。
3)pls包提供偏最小二乘回归(PLSR)和主成分回归;
4)ppls包可做惩罚偏最小二乘回归;
5)dr包提供降维回归方法,
如:片逆回归法(Sliced Inverse Regression)、片平均方差估计(sliced average variance estimation)。
6)plsgenomics包做基于偏最小二乘回归的基因组分析。
7)relaimpo包可评估回归参数的相对重要性。
2、logistic回归:
【包】:stats  
【函数】:glm(formula, family=gaussian,data,  ...)
注:family
binomial(link = "logit")
gaussian(link = "identity")
Gamma(link = "inverse")
inverse.gaussian(link = "1/mu^2")
poisson(link = "log")
quasi(link = "identity", variance = "constant")
quasibinomial(link = "logit")
quasipoisson(link = "log")
 
3、无监督分类~决策树:
【包】:rpart
【函数】:rpart(formula,data, method="class",control=ct,parms=list(prior=c(p,1-p),split="information"))

rpart.plot(fit,branch=1,branch.type=2,type=1,extra=102,shadow.col=”gray”,box.col=”green”,

split.cex=1.2,main=”Kyphosis决策树”) #提供了复杂度损失修剪的修剪方法

printcp(fit):告诉分裂到哪一层,CP,nsplit,rel,error,交叉验证的估计误差(xerror),标准误差(xstd)

prune(fit,cp=fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"]):剪枝函数

【备注】:1)CRAN的 MachineLearning任务列表有对树方法的细节描述。

2)分类树也常常是重要的多元方法,rpart包正是这样的包,

3)rpart.permutation包还可以做rpart()模型的置换(permutation)检验。

4)TWIX包的树可以外部剪枝。

5)hier.part包分割多元数据集的方差。

6)mvpart包可做多元回归树,

7)party包实现了递归分割(recursive partitioning),

8)rrp包实现了随机递归分割。

9)caret包可做分类和回归训练,进而caretLSF包实现了并行处理。

10)kknn包的k-近 邻法可用于回归,也可用于分类。

4、支持向量机:

【包】:e1071,kernlab

【函数】:svm(x_train,y_train,type="C-classification",cost=10,kernel="radial",probability=TRUE,scale=FALSE)

svp=ksvm(x,y,type="C-svc",kernel="rbf",kpar=list(sigma=1),C=1)

5、无监督分类~聚类分析:

【包】:stats

【函数】:系统聚类:hclust(d,method=”complete”,members=NULL)

快速聚类:kmeans(x,centers,iter.max=10,nstart=1,algorithm=“Hartigan-Wong”)

距离函数:dist(x,method=”euclidean”,diag=FALSE,upper=FALSE,p=2)

【备注】:1)CRAN的Cluster任务列表全面的综述了R实现的聚类方法。

2)stats里提供等级聚类hclust()和k-均值聚类kmeans()。

3)cluster包里有大量的聚类和可视化技 术,

4)clv包里则有一些聚类确认程序,

5)e1071包的classAgreement()可计算Rand index比较两种分类结果。

6)Trimmed k-means聚类分析可由trimcluster包实现,

7)聚类融合方法(Cluster Ensembles)由clue包实现,

8)clusterSim包能帮助选择最佳的聚类,

9)hybridHclust包提供一些混合聚类方法。

10)energy包里有基于E统计量的距离测度函数edist()和等级聚类方法hclust.energy()。

11)LLAhclust包提供基于似然(likelihood linkage)方法的聚类,也有评定聚类结果的指标。

12)fpc包里有基于Mahalanobis距离的聚类。

13)clustvarsel包有多种基于模型的聚类。

14)模糊聚类(fuzzy clustering)可在cluster包和hopach包里实现。

15)Kohonen包提供用于高维谱(spectra)或模式(pattern)的有监督和无监督的SOM算法。

16)clusterGeneration包帮助模拟聚类。

17)CRAN的Environmetrics任务列表里也有相关的聚类算法的综述。

18)mclust包实现了基于模型的聚类,

19)MFDA包实现了功能数据的基于模型的聚类。

6、关联分析:

【包】:arules,Matrix,lattice,arulesViz

【函数】:apriori(Groceries,parameter=list(support=0.01,confidence=0.2))

eclat(Groceries, parameter = list(support = 0.05),control = list(verbose=FALSE))

7、主成分分析:

【包】:stats

【函数】:princomp(data,cor=False,scores=TRUE,covmat=NULL,subset=rep(TRUE,nrow(as.matrix(x))) ,…)

prcomp(data,cor=False,scores=TRUE,covmat=NULL,subset=rep(TRUE,nrow(as.matrix(x))) ,…)

prcomp:采用观测值的奇异值分解方法;princomp:采用相关系数阵的特征值分解方法

【备注】:1)stats 包的prcomp()(基于svd())和princomp()(基于eigen())能计算主成分。

2)sca包做单分量分析。

3)nFactors可评价碎石 图(Scree plot),

4)paran包可评估主成分分析得到的主成分和因子分析得到的因子。

5)pcurve包做主曲线(Principal Curve)分析和可视化。

6)gmodels包提供适合大矩阵的fast.prcomp()和fast.svd()。

7)kernlab包里的kpca()用核 方法做非线性的主成分分析。

8)pcaPP包用投影寻踪(projection pursuit)法计算稳健/鲁棒(robust)主成分。

9)amap包的acpgen()和acprob()函数分别针对广义(generalized) 和稳健(robust)主成分分析。

8、对应分析:

【包】:ca,MASS,vegan,FactoMineR

【函数】:简单对应分析:ca(data,...)

多重对应分析:mjca(data,...)

plot3d.ca(ca(data,nd=3))

plot(mjca(data,lambda="Burt"))

【备注】:1)MASS包的corresp()和mca()可以做简单和多重对应分析;

2)ca包提供单一、多重和联合对应分析;

3)FactoMineR包的CA()和MCA()函数也能做类似的简单和多重对应分析,还有画图函数,

homals可执行同质分析。

9、因子分析:

【包】:psycho,stats

【函数】:Bartlett球形检验:cortest.bartlett(cor(data),n=length(data))

factanal(~X1 + X2 + X3 + X4,data=freeny,factors=1)

10、神经网络

【包】:nnet

【备注】:nnet包执行单隐层前馈神经网络,nnet是VR包的一部分。

11、随机森林:(回归和分类)

【包】:randomForest,ipred,varSelRF

【备注】:1)ipred包用bagging的思想做回归,分类和生存分析,组合多个模型;

2)party包也提供了基于条件推断树的随机森林法;

3)varSelRF包用随机森林法做变量选择。

12、递归拆分:(回归,分类,生存分析)

【包】:rpart,tree

【备注】:1)递归拆分利用树形结构模型,来做回归、分类和生存分析,主要在rpart包和tree里执行,尤其推荐rpart包。

2)Weka里也有这样的递归拆分法,如:J4.8, C4.5, M5,包Rweka提供了R与Weka的函数的接口

13、Boosting:(提高给定任意学习算法精确度的方法)

【包】:gbm,boost

【备注】:1)gbm包做基于树的梯度下降boosting;

2)boost包包括LogitBoost和L2Boost;

3)GAMMoost包提供基于boosting 的广义相加模型(generalized additive models)的程序;

4)mboost包做基于模型的boosting。

14、模型确认和选择:

【包】:e1071,ipred,svmpath,ROCR,caret,caretLSF

【函数】:tune,errorest,cost,

【备注】:1)e1071 包的tune()函数在指定的范围内选取合适的参数;

2)svmpath包里的函数可用来选取支持向 量机的cost参数C;

3)ROCR包提供了可视化分类器执行效果的函数,如画ROC曲线;

4)caret包供了各种建立预测模型的函数,包括参数选择和重要性量度;
15、缺失数据
【包】:mitools,mice,mvnlme,norm,cat,mix,pan,VIM,Hmisc,EMV,monomvn
【备注】:1)mitools包里有缺失数据的多重估算(multiple imputation)的函数;
2)mice包用chained equations实现了多重估算;
3)mvnmle包可以为多元正态数据的缺失值做最大似然估计(ML Estimation);
4)norm包提供了适合多元正态数据的估计缺失值的期望最大化算法(EM algorithm);
5)cat包允许分类数据的缺失值的多重估算,mix包适用于分类和连续数据的混合数据;
6)pan包可为面版数据(panel data)的缺失值做多重估算;
7)VIM包做缺失数据的可视化和估算;
8)Hmisc包的aregImpute()和transcan()提供了其它的估算缺失值方法;
9)EMV包提供了knn方法估计缺失数据;
10)monomvn包估计单调多元正态数据的缺失值。
16、隐变量方法
【包】:stats,MCMCpack,GPArotation,FAiR,ifa,sem,ltm,eRm,FactoMineR,tsfa,polCA
【备注】:1)stats包的factanal()执行最大似然因子分析,
2)MCMCpack包可做贝叶斯因子分析。
3)GPArotation包提供投影梯度(Gradient Projection)旋转因子法。
4)FAiR包用遗传算法作因子分析。ifa包可用于非正态的变量。
5)sem包拟合线形结构方程模型。
6)ltm包可做隐含式语 义分析 (Latent semantic analysis),
7)eRm包则可拟合Rasch模型(Rasch models)。
8)FactoMineR包里有很多因子分析的方法,
包括:MFA()多元因子分析,HMFA()等级多元因子分析,ADFM()定量和定性 数据的多元因子分析。
9)tsfa包执行时间序列的因子分析。
10)poLCA包针对多分类变量(polytomous variable)做潜类别分析(Latent Class Analysis)。
17、有监督分类和判别分析
【包】:MASS ,mda,
【备注】:1)MASS 包里的lda()和qda()分别针对线性和二次判别分析。
2)mda包的mda() and fda()允许混合和更灵活的判别分析,
3)mars()做多元自适应样条回归(multivariate adaptive regression splines),
4)bruto()做自适应样条后退拟合(adaptive spline backfitting)。
5)earth包里也有多元自适应样条回归的函数。
6)rda包可用质心收缩法(shrunken centroids regularized discriminant analysis)实现高维数据的分类。
7)VR的class包的knn()函数执行k-最近邻算法,
8)knncat包里有针对分类变量的k-最近邻算法。
9)SensoMineR包的FDA()用于因子判别分析。
10)许多包结合了降维(dimension reduction)和分类。
klaR包可以做变量选择,可处理多重共线性,还有可视化函数。
11)superpc包利用主成分做有监督的分类,
12)classPP 包则可为其做投影寻踪(projection pursuit),
13)gpls包用广义偏最小二乘做分类。
14)hddplot包用交叉验证的线性判别分析决定最优的特征个数。
15)supclust包可以根据芯片数据做基因的监督聚类。
16)ROCR提供许多评估分类执行效果的方法。
17)predbayescor包可做朴素贝叶斯(na?ve Bayes)分类。
18、典型相关分析
【包】:stats,kernlab
【备注】:1)stats包里的cancor()是做典型相关的函数。
2)kernlab包提供更稳健的核方法kcca()。
3)concor包提供了许多concordance methods。
4)calibrate包里的rda()函数可做冗余度分析和典型相关。

转自:http://blog.163.com/zhangyanxia2008@126/blog/static/3639752420148126569222/

上一篇:codeforces B. Color the Fence 解题报告


下一篇:C++拷贝构造函数的调用时机