设为首页 加入收藏

TOP

R语言-回归分析笔记(一)
2017-10-10 12:10:08 】 浏览:9942
Tags:语言 回归 分析 笔记

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

目标变量是连续型的,则称其为回归分析
(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是通过交叉验证获得的模型误差
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇R语言-基础解析 下一篇R语言中 安装rJava 和Rwordseg

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }