当前位置:首页 > R常用数据挖掘函数
library(DAAG)
lm.reg<-lm(Employed~GNP+Unemployed+Armed.Forces+Population+Year,data=longley) vif(lm.reg, digits=4)
GNP Unemployed Armed.Forces Population Year
1034.000 23.260 3.152 225.700 732.600 膨胀因子大多大于10,存在严重的相关性 一般来说kappa大于1000,或vif大于10说明存在复共线性。 (car包中的)回归诊断实用函数 函数 目的
qqPlot() 分位数比较图
durbinWatsonTest() 对误差自相关性做Durbin-Watson检验 crPlots() 成分与残差图
ncvTest() 对非恒定的误差方差做得分检验 spreadLevelPlot() 分散水平检验 outlierTest() Bonferroni离群点检验 avPlots() 添加的变量图形 inluencePlot() 回归影响图 scatterplot() 增强的散点图
scatterplotMatrix() 增强的散点图矩阵 vif() 方差膨胀因子
car包中的qqPlot(x, labels, id.method, simulate)函数:分位比较图。x为lm对象;labels为文本字符串向量;id.method为点识别方法;simulate为T,计算置信区间。
2、car包的scatterplotMatrix()函数:返回的是N*N的散点图矩阵。增强的散点图矩阵单因素显示沿着对角线;SPM是scatterplotmatrix(散点图矩阵)缩写。此功能只需设置一个与自定义面板功能对的调用(用于画图判断)。例如:
states<-as.data.frame(state.x77[,c(“Murder”,”Population”, “Illiteracy”,”Income”,”Frost”)]) #简化数据框
cor(states) #相关性检测 library(car)
scatterplotMatrix(states,spread=F,lty.smooth=2) spread=T为方差函数的估计;
car包中的scatterplot()函数:可以很容易、方便地绘制二元关系图;增强的散点图 car包的vif()函数:用于计算膨胀因子(用于解决多重共线性)。
car包中的outlierTest(model)函数:Bonferrnoi离群点检测。model为lm或glm对象。是根据单个最大(或正或负)残差值的显著性来判断是否有离群点,若不显著,则说明数据集中没有离群点,若显著,则必须删除该离群点,然后再检验是否还有其他离群点存在。
car包中的influencePlot()函数,可将离群点、杠杆点和强影响点的信息整合到一幅图形中 car包中的influencePlot(mdoel, id.method)函数:回归影像图。model为线性或广义线性模型;id.method为“identify”为交互点识别。 3、psych包用于主成分分析
psych包中的princomp()函数:可以根据原始数据或相关系数矩阵做主成分分析 。格式为:principal(x,nfactors=,rotate=,scores=)
其中:x是相关系数矩阵或原始数据矩阵;nfactors设定主成分个数(默认为1);rotate指定旋转的方式(“none”或“varimax”)[默认最大方差旋转(varimax);scores设定是否需要计算主成分得分(“T”或”F”)(默认不需要)。
psych包中的fa.parallel()函数:可以判断主成分的个数,其使用格式为: fa.parallel(x, fa = ,
n.iter =)
其中,x为待研究的数据集或相关系数矩阵,fa为主成分分析(fa= “pc”)或者因子分析(fa = “fa”),n.iter指定随机数据模拟的平行分析的次数。
4、利用MASS包中的函数lm.ridge()来实现岭回归
利用ridge包中的linearRidge()函数进行自动选择岭回归参数
通过effects包中的effect()函数,可以用图形展示交互项的结果 利用ridge包中的linearRidge()函数进行自动选择岭回归参数
5、lars包提供了lasso()函数(lasso:套锁算法,用于解决多重共线性):Lasso算法则是一种能够实现指标集合精简的估计方法。并利用AIC准则和BIC准则给统计模型的变量做一个截断,进而达到降维的目的。因此,我们通过研究Lasso可以将其更好的应用到变量选择中去。 lars包提供的lars()函数:这些是套索所有的变种,并提供系数和适合整个序列,从零开始,以最小二乘法拟合。
lars包的cv.lars()函数:计算交叉验证误差曲线的Lars。cva <- cv.lars(x2, y, K = 10, plot.it = TRUE) #10折叠交叉验证,并绘制cv(交叉验证)的变化图。 lars包中的coef.lars()函数或者predict.lars()函数:从拟合的lars模型预测或提取系数;当lars()生产解决方案的整个路径,predict.lars允许提取沿着路径在特定的点预测。coef <- coef.lars(laa, mode = “fraction”, s = best) #获取使得CV最小时的系数 (请参考多重共线性中的lasso算法) S 一个值,或一个向量值,索引路径。它的值取决于mode= argument。默认情况下(mode= “step”),应该采取p和0之间的值
Mode Mode=”step”是指S =参数指标的Lars的步数,系数将返回相应的值对应于step s。如果mode=”fraction”,然后应该是0和1之间的数,它指的是系数向量范数比,相对为了规范在全最小二乘解。Mode=”norm”指的是指L1范数的系数向量。Mode=”lambda”用套索正则化参数的;其他型号是最大相关(不让Lars /逐步模型)。允许缩写。
共glmnet包实现lasso套锁算法,用cv.glmnet()函数来实现cv(交叉验证):做为glmnet K-fold交叉验证,产生了一个图,并返回一个值λ。
gla <- cv.glmnet(x2, y, nfolds = 10) #cv做交叉验证来确定模型,nfolds=10其实是默认值 折叠数-默认为10。虽然折叠数可以当样本容量大(留一CV),这是不推荐用于大型数据集。最小值是允许nfolds = 3 二、主成分分析
1、psych包的实例请参照 主成分分析2:psych包 psych包中的常用函数:
principal() 含多种可选的方差放置方法的主成分分析
fa() 可用主轴、最小残差、加权最小平方或最大似然法估计的因子分析 fa.parallel() 含平等分析的碎石图
factor.plot() 绘制因子分析或主成分分析的结果
fa.diagram() 绘制因子分析或主成分分析的载荷矩阵 scree() 因子分析和主成分分析的碎石图
psych包中的fa.parallel(x, n.obs, fa, n.iter, show.legend)函数:数据的碎石图,可以判断主成分的个数。x为数据框或矩阵;n.obs为0表示数据框或矩阵,否则表示多少种情况用来寻找相关性;fa为pc表示主成分分析,为fa表示因子分析,为both表示主成分分析和因子分析;n.iter指定随机数据模拟的平行分析的次数;show.legend表示是否显示图例,为T显示,为F不显示。
psych包中的principal(r, nfactors)函数:主成分分析,可以根据原始数据或相关系数矩阵做主成分分析。r是原始数据或相关系数矩阵;nfactors指定主成分个数,即设定提取的因子数;
rotate指定旋转的方法(“none”或“varimax”),scores为是否需要计算主成分得分(“T”或”F”) principal与princomp函数返回结果不同,princomp函数返回的是主成分的线性组合系数,而principal函数返回原始变量与主成分之间的相关系数,这样就和因子分析的结果意义相一致。
psych包中的fa(r,nfactors=,n.obs=,rotate=,scores=,fm=)函数:提取相应的因子,可用主轴、最小残差、加权最小平方或最大似然法估计的因子分析。r为相关系数矩阵或者原始数据矩阵;nfactors为提取的因子数(默认为1);rotate为设定旋转的方法(默认互变异数最小法);fm为设定因子化方法(默认极小残差法)。 r是相关系数矩阵或者原始数据矩阵; nfactors设定提取的因子数(默认为1);
n.obs是观测数(输入相关系数矩阵时需要填写); rotate设定旋转的方法(默认互变异数最小法); scores设定是否计算因子得分(默认不计算); fm设定因子化方法(默认极小残差法)。
与PCA不同,提取公共因子的方法很多,包括最大似然法(ml)、主轴迭代法(pa)、加权最小二乘法(wls)、广义加权最小二乘法(gls)和最小残差法(minres)未旋转的主轴迭代因子法
psych包中的factor.plot(fa, labels)函数:绘制因子分析或主成分分析的结果。fa为一个因子分析或距离分析的输出;labels如果存在将被添加到图中。 三、贝叶斯
1、e1071包的naiveBayes函数提供了naive bayes的具体实现,其用法如下: S3 method for class ‘formula’
naiveBayes(formula, data, laplace = 0, …, subset, na.action = na.pass) Default S3 method:
naiveBayes(x, y, laplace = 0, …) x:表示数字矩阵或数字变量的数据框;y:表示类向量; laplace 默认为0表示禁用拉普拉斯平滑,正数表示启用拉普拉斯平滑 object:“NaiveBayes”类的对象
predict(object, newdata, type) object:naveBayes模型;newdata:测试数据;type:预测类型,type如果为class代表是分类,如果是raw则代表概率的计算 predict函数分类需要指定type=”class”
klaR包中的NaiveBayes()函数:因为该函数比e1071包的naiveBayes()函数增加了两个功能,一个是可以输入先验概率,另一个是在正态分布基础上增加了核平滑密度函数。 predict()预测函数需要指定type=”class”来分类 2、tm包通常用于文本的分析:
tm包中的函数Corpus()(或VCorpus):导入数据。函数的用法如下:Corpus(x,readerControl = list(reader = x$DefaultReader, language = “en”),…) 对于这些资料来源(x),tm 包提供了一些相关的函数,比如:DirSource(处理目录)、 VectorSource(由文档构成的向量)、 DataframeSource(数据框)等。
tm 包中的tm_map()函数:可以通过maps 方式将转化函数实施到每一个单上。m_map()的主要用法如下:tm_map(x, FUN, …, useMeta = FALSE, lazy = FALSE) 再介绍字符串的处理,分割函数:strsplit。使用格式为: strsplit(x, split, fixed = FALSE, perl = FALSE, useBytes = FALSE) 主要参数说明:
X:字串向量,每个元素都将单独进行拆分。
Split:为拆分位置的字串向量,默认为正则表达式匹配(fixed=FALSE)fixed=TRUE,表示使用普通文本匹配或正则表达式的精确匹配。
Perl:表示可以选择是否兼容Perl的正则表达式的表述方式。
findFreqTerms(x, lowfreq, highfreq)函数:在文档术语或术语文档矩阵中查找频繁项。x为一个术语文档矩阵;lowfreq为一个数字,表示较低的频繁项;highfreq为一个数字,表示较高的频繁项
3、caret包的函数:(有K近邻算法的函数knn3)
createdatapartition(y, times, p=0.5, list)函数:创建一系列的测试/训练的分区。y为真实分类数据,一个输出的向量,如果是createtimeslices,这些应该是按时间的顺序;times为创建的分区的数目,除非重复实验,否则需要一个就行;p训练集占数据集的比重;list为F是不将结果列在列表中。
createresample()函数:创建一个或多个Bootstrap样本; Createfolds()函数:将数据分为K组;
createtimeslices()函数:创建交叉验证样本信息可用于时间序列数据。
caret包中的knn3(formula, data, subset, k)函数:K近邻分类算法。formula为模型公式;data为数据集;subset为自数据集;k为选择的近邻个数
caret包中的predict.knn3(object, newdata, type)函数也可以写成predict():K近邻算法的预测函数。object为knn3类对象(K近邻算法模型);newdata为要观测数据的数据框;typetype如果为class代表是分类,如果是prop则代表概率的计算
4、gmodels包的CrossTable(x, y, prop.chisq, prop.t, dnn)函数:独立试验因素的交叉制表。 x为向量或矩阵,如果y指定,必须是一个向量;y为一个矩阵或数据框的向量;prop.chisq为T时,每个单元的卡方贡献将被包括;prop.t为T时,t分布的分布率将被包括;dnn在结果的尺寸中被给予的名称。 四、K近邻(KNN) 算法
1、class包的knn(train, test, cl, k=1)函数:tarin为训练集数据矩阵或数据框;test为测试集数据矩阵或数据框;cl为训练集的真实分类数据,应是因子类型的;k为选择的近邻个数 class包中的knn1(train, test, cl)函数:即 knn 中选择 k = 1 的情况,因此 knn1 是 knn 的一个退化情况。
class包中的knn.cv(train, cl, k, prob):K最近邻交叉验证函数。train为训练集数据;cl为训练集的真实分类因子;k为选择的近邻个数;prob为T时,投票获胜类将以概率返回。 其使用的方法是 leave-one-out cross validation。即所有的样本点都算到训练集中去,不设置测试集。对每个训练集中的样本点,都使用剩余的样本点中的 k 个最近邻来进行投票,从而决定该样本点的分类。
2、 R语言里的kknn包也可以实现最邻近算法——使用kknn函数
kknn(formula = formula(train),train, test, na.action = na.omit(), k= 7, distance = 2, kernel = “optimal”, ykernel = NULL, scale=TRUE, contrasts= c(‘unordered’ = “contr.dummy”, ordered =”contr.ordinal”)):为K最近邻算法。其中,formula表示训练集的表达式对象;train为训练集的数据框或矩阵;test为测试集的数据库或矩阵;distance默认为明科夫斯基距离,等于2时为欧氏距离;na.action 缺失值处理,默认为去掉缺失值;kernel内核使用,可能的选择是“rectangular”(这是标准的加权KNN),”triangular”, “epanechnikov”(或β(2,2)),”biweight”(或β(3,3)),“triweight”(或β(4,4)),”cos”, “inv”, “gaussian”, “rank” and “optimal”;k为考虑的邻近数量
sample(x, size, replace=F, prob=NULL):采样函数。x表示要取样的源数据集,为一个向量;size非负整数,要采样的大小;replace表示是否为有返回采用,为F表示不返回采样;prob用
共分享92篇相关文档