绘制带回归线的散点图
回归分析
这里列出的是一些常用的回归方法
回归类型 |
用途 |
---|---|
简单线性 |
一个量化的解释变量来预测一个量化的响应变量(一个因变量x、一个自变量y) |
多项式 |
一个量化的解释变量预测一个量化的响应变量,模型的关系是n阶多项式((一个因变量x、一个自变量y)) |
多元线性 |
用两个或多个量化的解释变量预测一个量化的响应变量(x1,x2,x3......;y) |
Logistic |
用一个或多个解释变量预测一个类别型变量 |
非线性 |
用一个或多个量化的解释变量预测一个量化的响应变量,不过模型是非线性的,比如指数回归,对数回归等(一个因变量x、一个自变量y) |
非参数 |
用一个或多个量化的解释变量预测一个量化的响应变量,模型的形式源自数据形式,不事先设定(一个因变量x、一个自变量y) |
1.1参数回归分析,也即拟合曲线。一般采用最小二乘法实现拟合曲线的参数计算(使残差平方和最小)
按自变量的多少分为一元和多元回归分析;按自变量和因变量的关系分为线性和非线性回归;比较常用的是多项式回归、线性回归和指数回归。
1.2 用lm()拟合回归模
拟合线性模型最基本的函数就是lm(),格式为:
myfit<-lm(formula,data)
formula指要拟合的模型形式,data是一个数据框,包含了用于拟合模型的数据
formula形式如下:Y~X1+X2+……+Xk (~左边为响应变量,右边为各个预测变量,预测变量之间用+符号分隔)
R表达式中常用的符号 | |
---|---|
符号 |
用途 |
~ |
分隔符号,左边为响应变量,右边为解释变量,eg:要通过x、z和w预测y,代码为y~x+z+w |
+ |
分隔预测变量 |
: |
表示预测变量的交互项 eg:要通过x、z及x与z的交互项预测y,代码为y~x+z+x:z |
* |
表示所有可能交互项的简洁方式,代码y~x*z*w可展开为y~x+z+w+x:z+x:w+z:w+x:z:w |
^ |
表示交互项达到某个次数,代码y~(x+z+w)^2可展开为y~x+z+w+x:z+x:w+z:w |
. |
表示包含除因变量外的所有变量,eg:若一个数据框包含变量x、y、z和w,代码y~.可展开为y~x+z+w |
- |
减号,表示从等式中移除某个变量,eg:y~(x+z+w)^2-x:w可展开为y~x+z+w+x:z+z:w |
-1 |
删除截距项,eg:y~x-1表示拟合y在x上的回归,并强制直线通过原点 |
I() |
从算术的角度来解释括号中的元素。Eg:y~x+(z+w)^2将展开为y~x+z+w+z:w。相反,代码y~x+I((z+w)^2)将展开为y~x+h,h是一个由z和w的平方和创建的新变量 |
function |
可以在表达式中用的数学函数,例如log(y)~x+z+w表示通过x、z和w来预测log(y) |
1.3. 简单线性回归
直线回归的假设检验
任何两个变量之间都可以建立直线回归方程,而该方程是否有意义,关键在于回归是否达到显著水平/因为即使x,y之间不纯在线性关系,即β=0,但由于抽样误差,其回归系数b也不一定为0,因此我们需要用到方差分析或者t检验进行β是否为零的假设检验。
直线回归的变异来源
2、一元线性回归的假设检验
在一元线性回归中(多元也一样),假设检验主要分两块,分为对回归方程的检验和对回归系数的检验,这两个检验虽然构造的统计量不同,但在一元线性回归中,这两个检验结果是一样的。
对回归方程的检验
y的变异我们可以对其进行分解,即总编一可以分解为由x引起的变异和误差引起的变异
其中:
所以平方和分解式可以写成:
F检验。
假设H0:两个变量之间无线性关系, HA:两个变量之间存在线性关系。在无效假设下,SSR与SSE之间的比值服从df=1和df=n-2的F分布
构造统计量:
后面就是计算统计量,计算P值,确定是否显著。
T检验
我们也可以采用T检验检验线性回归的显著性。H0:β=0,HA:β不等于0
知道了一个统计量的值以及他的样本方差,便可以对进行t检验,比如我们检验β均值为0, t值如下,通过t分布,可以查出某一个t值对应的p值,如果p值<0.05, 那么我可以拒绝该假设。
R方
R方的取值范围是0到1,所以它给出的信息是一个相对的RSE值,计算方式如下。如果R方越接近于1,越是说明RSS即残差平方和足够小。所以R方与F统计值有很强的关系,可以看作F值的另一种形式。
综合上述,对一个拟合的检验有三种统计量衡量,分别为t,F,和R方,在R中如下图所示:
eg:
fit<-lm(weight~height,data=women)
summary(fit)
> summary(fit)
lm(formula = weight ~ height, data = women)
Residuals:
Min 1Q Median 3Q Max
-1.7333 -1.1333 -0.3833 0.7417 3.1167
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -87.51667 5.93694 -14.74 1.71e-09 ***
height 3.45000 0.09114 37.85 1.09e-14 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.525 on 13 degrees of freedom
Multiple R-squared: 0.991, Adjusted R-squared: 0.9903
F-statistic: 1433 on 1 and 13 DF, p-value: 1.091e-14
在Pr(>|t|)栏,可以看到回归系数(3.45)显著不为0(p<0.001),表明身高每增加1英寸,体重将预期地增加3.45磅
R平方项(0.991)表明模型可以解释体重99.1%的方差,它也是实际和预测值之间的相关系数(R^2=r^2)
残差的标准误(1.53lbs)则可认为模型用身高预测体重的平均误差
F统计量检验所有的预测变量预测响应变量是否都在某个几率水平之上
对拟合线性模型非常有用的其他函数 | |
---|---|
函数 |
用途 |
Summary() |
展示拟合的详细结果 |
Coefficients() |
列出拟合模型的模型参数(截距项和斜率) |
Cofint() |
提供模型参数的置信区间(默认95%) |
Fitted() |
列出拟合模型的预测值 |
Residuals() |
列出拟合模型的残差值 |
Anova() |
生成一个拟合模型的方差分析,或者比较两个或更多拟合模型的方差分析表 |
Vcov() |
列出模型参数的协方差矩阵 |
AIC() |
输出赤池信息统计量 |
Plot() |
生成评价拟合模型的诊断图 |
Predict() |
用拟合模型对新的数据集预测响应变量值 |
residuals(fit)#拟合模型的残差值
绘制带回归线的散点图
fit<-lm(weight~height,data=women)
summary(fit)
myintercept<-fit$coefficients[[1]]
myslope<-fit$coefficients[[2]]
ggplot(data=women,aes(height,weight))+
geom_point(size=5,color="red")+
geom_abline(slope=myslope,intercept=myintercept)
绘制带残差显得散点图
fit<-lm(weight~height,data=women)
summary(fit)
women$predicted <- predict(fit) # Save the predicted values
women$residuals <- residuals(fit) # Save the residual values
women$Abs_Residuals<-abs(women$residuals)
myintercept<-fit$coefficients[[1]]
myslope<-fit$coefficients[[2]]
ggplot(data=women,aes(x=height,y=weight))+
geom_point(aes(size=Abs_Residuals,color=Abs_Residuals))+ # 根据残差大小绘制点
scale_fill_continuous(low = "black", high = "red") +
geom_abline(slope=myslope,intercept=myintercept)+ #添加回归线
geom_segment(aes(xend = height, yend = predicted), alpha = .2)+ #添加纵向残差线
theme_classic()
用geom_smooth方法绘制回归线
fit<-lm(weight~height,data=women)
summary(fit)
women$predicted <- predict(fit) # Save the predicted values
women$residuals <- residuals(fit) # Save the residual values
women$Abs_Residuals<-abs(women$residuals)
myintercept<-fit$coefficients[[1]]
myslope<-fit$coefficients[[2]]
ggplot(data=women,aes(x=height,y=weight))+
geom_point(aes(size=Abs_Residuals,color=Abs_Residuals))+
scale_fill_continuous(low = "black", high = "red") +
#geom_abline(slope=myslope,intercept=myintercept)+
geom_segment(aes(xend = height, yend = predicted), alpha = .2)+
geom_smooth(method = "lm", se =F, color = "lightgrey") +
theme_classic()
- JAVA private私有类的 默认构造函数 的生成过程
- 一次数据变更的审核过程(r8笔记第95天)
- JavaScript 学习一
- 与Ajax同样重要的jQuery(2)
- 寻找第K元素的八大算法、源码及拓展
- 索引优先队列-IndexedPrirotyQueue的原理及实现(源码)
- Java 集合系列02之 Collection架构
- 开发者需要掌握的JS事件
- Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
- Kosaraju算法、Tarjan算法分析及证明--强连通分量的线性算法
- 关于curl网站运维与开发的那些事
- 并查集Union-find及其在最小生成树中的应用
- go 语言的库文件放在哪里?如何通过nginx代理后还能正确获取远程地址
- 离线Tarjan算法-最近公共祖先问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法