R语言基础篇学习笔记(一)

  • A+
所属分类:R语言 数据分析

细水长流,不进则退以及向指尖之上的智慧学习(R基础篇学习笔记)!

一、基本内容

1、data.frame列求mean:colMeans(x)

只对制定列求means:colMeans(x)[c("x1","x2","x3")]

用apply函数:apply(x,2,mean)

只对指定列操作:apply(x[c("x1","x2","x3")],1,mean)

2、修改指定条件值:x[which(x)>100]<-value

计算后的最大值:which.max(apply(x[c("x1","x2","x3")],1,mean))

计算后的最大值对应列的行值:x$num[which.max(apply(x[c("x1","x2","x3")],1,mean))]

3、列联函数统计每个样本个数:table(x)

4、计算相关系数矩阵,用于变量之间的相关性分析:cor(x,y,z),用于表示两个变量之间的关系程度,越接近1说明关系越密切,相关系数可由变量协方差求得;

5、检验总体和样本的差别,需要进行显著性检验,相关系数显著性假设检验,是在95%的置信水平下,相关系数数值所落在的区间位置;

6、回归分析

相关系数可以知道变量间的相关性,但如何想要预测,就需要做回归分析,一元线性回归方程,通过最小二乘法求得线性函数

a<-lm(y~x)

summary(a)#线性模型的汇总数据,t检验

R语言基础篇学习笔记(一)

适用于多元线性模型的基本函数是lm,fitted.model<-lm(formula,data=data.frame),返回值为线性模型结果,对象存放在fitted.model中,如

fm2<-lm(y~x1+x2,data=pro),使用与y关于x1和x2的多元回归模型(隐含着系数和截距)

y~1+x 或者y~x均表示y=a+b*x的线性模型

结论:pr越小越好,estimate列分别表示截距和斜率,越接近1说明模型越好,拟合程度越好

运用线性回归的前提:样本变量必须正态分布以及两个必须满足线性关系

R语言基础篇学习笔记(一)

二、多元线性回归

Lm(y~x1+x2)

三、正态分布检验

函数shapiro.Test,假设P〉0.05表示假设总体样本符合正态分布的,如果检验结果不符合正态分布则不可以使用线性回归;结果看p-value值,p越接近1说明符合正态分布

四、残差

Y.res<-residuals(lm.sol)

如果样本服从正态分布,则其残差也是服从正态分布,通过:shapiro.test(y.res)进行测试

五、修改模型

Lm.new<-update(lm.sol,sqrt(.)~.);#update是模型修改函数,y的平方差于x的线性模型

coef(lm.new)#coef是提取回归系数

六、多重共线性

表示非独立变量,其可以通过其他变量组合得到

如果存在多重共线性,则模型最小特征值非常接近0(也得看所有特征值的规模),其逆矩阵非常不稳定,所以线性回归时需要排除多重共线性情况

可以通过最大特种根/最小特征根,用kappa值表示,如果kappa小于100,则认为多重共线性的程度很小,若介于100到1000之间,则认为存在中等程度或较强的多重共线性,如大于1000,则存在严重多重共线性

R语言基础篇学习笔记(一)

可以看出多重共线性程度很小

排除多重共线性:

eigen(xx)算出最小特征值和特征向量,通过查看特征向量的每个元素的值接近程度查看是否存在哪几个存在多重共线性,然后就可以剔除其中一个了

七、广义线性模型(非线性回i归里面的一类)

可以通过转换把非线性回归中的这一类变成线性回归的,比如变量不是连续的,则可以通过转换变为连续型变量

logistic回归模型曲线特征是符合s型特征

R语言基础篇学习笔记(一)

建模函数:glm()

八、非线性模型

如果x、y服从log模型:y=a+b*logx,则可以用lm做:lm.log=lm(y~log(x))

如果服从指数法:y=a*e^(bx),则可用:lm.exp=lm(log(y)~x)

如果服从幂函数法:y=a*x^b,则可用:lm.pow=lm(log(y)~log(x))

Summary(lm.pow)

Plot(x,y)

九、多项式回归

多元多次多项式,有可能出现过度拟合,就是训练集拟合很好,但是测试集结果很差

华青莲日常点滴,方便自己,成长他人!!!

华青莲
R语言实战(中文完整版)
机器学习电子书
MySQL必知必会
精选各名校数学专业考研初试试卷

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: