• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

R语言-回归分析笔记

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

使用若干自变量并建立公式,以预测目标变量

目标变量是连续型的,则称其为回归分析
(1)一元线性回归分析
y=kx+b
sol.lm<-lm(y~x,data)
abline(sol.lm)
使模型误差的平方和最小,求参数k和b,称为最小二乘法
 
k=cov(x,y)/cov(x,x)
b=mean(y)-k*mean(x)
 
 估计参数b,k的取值范围 p元模型 p是自变量数,n是样本数
[ki-sd(ki)ta/2(n-p-1),ki+sd(ki)ta/2(n-p-1)] k0表示回归模型的b;   k1表示k;sd(k)是标准差
自由度 df<-sol.lm$df.residual
left<-summary(sol.lm)$coefficients[,1]-summary(sol.lm)$coeffients[,2]*qt(1-alpha/2,df)
right<-summary(sol.lm)$coefficients[,1]+summary(sol.lm)$coeffients[,2]*qt(1-alpha/2,df)
 
衡量相关程度
变量x和y相关系数r=Sxy/sqrt(Sxx)sqrt(Syy) 取值范围是[-1,1]  cor(x,y)  
判定系数r^2
 
修正判定系数 adjusted.r^2
判定系数在用于多元回归分析时有一个缺点,自变量数越多,判定系数越大
 
回归系数的显著性检验
 
T检验 summary(sol.lm)$coefficients[,4]
计算得到的p.value值越小,其值等于0的概率也就越小,当p.value<0.05,可认定k!=0
 
F检验 summary(sol.lm)$p.value
在整体上检验模型参数是否为0,并计算等于0的概率,当p.value<0.05,则通过了F检验
 
summary(sol.lm)$fstatistic 给出了样本自由度f、自变量自由度df1、F值df2
 
可以使用如下代码直接读取p.value值
pf(f,df1,df2,lower.tail=F) 或 1-pf(f,df1,df2)

模型误差(残差)  residuals
 
对一个正确的回归模型,其误差要服从正态分布
 
残差的标准误差可以从整体上体现一个模型的误差情况,它可以用于不同模型间性能的对比
 

预测

predict(sol.lm)

(2)多元回归分析
sol.lm<-lm(formula=y~. ,data.train)
 
模型修正函数update(object,formula)
update函数可以在lm模型结果的基础上任意添加或减少自变量,或对目标变量做取对数及开方等建模
 例如:
增加x2平方变量
lm.new<-update(sol.lm, .~.+I(x2^2))
删除x2变量
.~.-x2
把x2变为x2平方变量
.~.-x2+I(x2^2)
增加x1*x2
.~.+x1*x2
在模型中对y开方建模
sqrt(.)~.
 
逐步回归分析函数 step()
逐步减少变量的方法
lm.step<-step(sol.lm)
模型的ACI数值越小越好
 
自变量中包含分类型数据的回归分析
分类变量a的取值为i,则模型预测值是f(a1=0,...ai=1,ap=0)
 
(3)Logic回归 y=1/(1+exp(-x)) 使用最大似然法来估算
使用RODBC包读取Excel文件
 
root<-"C:/"
file<-paste(root,"data.xls",sep="")
library(RODBC)
excel_file<-odbcConnectExcel(file)
data<-sqlFetch(excel_file,"data")
close(excel_file)
 
使用模型的预测正确率来衡量
 
                               预测数据
                              num11              num10
实际数据                 num01             num00
 
预测正确率=(num11+num00)/样本总数量=(num11+num00)/(num11+num10+num01+num00)
 
t()返回转置
 
glm()是用R语言实现logic回归分析的核心函数
family=binomial("logit")
使用step()函数对模型进行修正
str函数查看包含的数据属性
 
模型预测
new<-predict(old,newdata=test.data)
new<-1/(1+exp(-new))
new<-as.factor(ifelse(new>=0.5,1,0))
 
模型的性能衡量
performance<-length(which((predict.data==data)==TRUE))/nrow(data)
(4)回归树CART
实现CART算法的核心函数是rpart包的rpart函数,再用plot函数画
maptree包的draw.tree函数
 
读取叶节点sol.rpart$frame$var=="<leaf>"
读取叶节点序号sol$rpart$where
要使测试集误差和回归树的规模尽可能小
 
cp复杂度系数 sol.rpart$cptable
xerror是通过交叉验证获得的模型误差
xstd是模型误差的标准差     xerror取xerror+/-xstd
剪枝就是找到一个合理的cp值
随着拆分的增多,复杂性参数会单调下降,但预测误差会先降后生
 
剪枝
prune(sol.part,0.02) 把cp<0.02的树剪除
使用plotcp()函数可以绘制出cp的波动关系
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【R】R语言排序函数汇总发布时间:2022-07-18
下一篇:
R语言关联规则发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap