摘要:目前經典的統計學分析方法主要有回歸分析,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/
