R语言-回归分析笔记

摘要:
使用几个独立变量并建立一个公式来预测目标变量是连续的,这称为回归分析(1)一元线性回归分析y=kx+bsol。lm˂-lm(y~x,data)下划线(sol.lm)以最小化模型误差的平方和,并计算参数k和b,这称为最小二乘法k=cov(x,y)/cov(x、x)b=均值(y)-k*均值(x)估计参数b,kp的值范围是自变量的数量,n是样本的数量[ki-sd(ki)ta/2(n-p-

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

目标变量是连续型的,则称其为回归分析
(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的波动关系
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

免责声明:文章转载自《R语言-回归分析笔记》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MySQL增删改查基本语句OCR2:tesseract字库训练下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

r语言 列出所有变量

你希望知道目前工作空间中存在哪些已定义的变量和函数。 解决方案 使用ls函数,或者使用ls.str函数了解每个变量更详细的信息。 讨论 ls函数可以显示当前工作空间中所有对象的名称:> x <- 10> y <- 50> z <- c("three", "blind", "mice")> f <- funct...

R语言使用灰色关联分析(Grey Relation Analysis,GRA)中国经济社会发展指标

原文链接:http://tecdat.cn/?p=16881 灰色关联分析包括两个重要功能。第一项功能:灰色关联度,与correlation系数相似,如果要评估某些单位,在使用此功能之前转置数据。第二个功能:灰色聚类,如层次聚类。  灰色关联度 灰色关联度有两种用法。该算法用于测量两个变量的相似性,就像`cor`一样。如果要评估某些单位,可以转置数据集。...

R语言基础-统计函数

一、数学统计函数 概率论是统计学的基础,R有许多用于处理概率,概率分布以及随机变量的函数。R对每一个概率分布都有一个简称,这个名称用于识别与分布相联系的函数。这部分涉及到很多统计学基础的理论知识,比如随机试验,样本空间,对立与互斥,随机事件与必然事件,概率密度,概率分布等。 1.四种基本函数 后缀 d + 后缀() 概率密度函数 p + 后缀(...

Ubuntu 12.04上安装R语言

Ubuntu 12.04上安装R语言 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ R的安装 sudo gedit /etc/apt/sources.list 在sources.list文件后面添加一行 deb http://ftp.ctex.org/mirrors/CRAN/bin/linux/ub...

R语言-Paste函数

该函数和excel中的&一样,可以将不同类型的数据放在一起。 paste(....,sep="",collapse=NULL) ...表示要加在一起的数据类型,e.g ​p<-paste("b",1:5) "b 1" "b 2" "b 3" "b 4" "b 5" 注意这里每一项中间有空格隔开,如果不想要空格,需要使用sep参数 p<-...

R语言从经济时间序列中用HP滤波器,小波滤波和经验模式分解等提取周期性成分分析

原文链接:http://tecdat.cn/?p=9350 经济时间序列的分析通常需要提取其周期性成分。这篇文章介绍了一些方法,可用于将时间序列分解为它们的不同部分。它基于《宏观经济学手册》中Stock和Watson(1999)关于商业周期的章节,但也介绍了一些较新的方法,例如汉密尔顿(2018)替代HP滤波器,小波滤波和经验模式分解。 数据 我使用从...