R语言笔记4_模型诊断(关于残差)
R语言笔记4_模型诊断(关于残差)及模型补救(Box-Cox变换)
文章目录
- R语言笔记4_模型诊断(关于残差)及模型补救(Box-Cox变换)
- 检验线性关系
- 检验方差齐性
- 检验残差正态性
- 检验离群值
- 模型补救(Box-Cox 变换)
检验线性关系
# test linear relation about residuals
rm (list=ls())
x = seq(1,30,by=1)
n = length(x)
y = x^2 - 10*x + 30 + 25*rnorm(n)
a100 = data.frame(x,y)fit1 = lm(y~x, data = a100)
anova(fit1)## Scatterplot with regrssion line
plot(y~x, data = a100)
abline(fit1)## scatterplot with smoothed curve
scatter.smooth(x,y)## residual plot
scatter.smooth(x,fit1$residuals)
abline(h=0)
检验方差齐性
# test homogeneous variance
x = seq(1,100,by=1)
n = length(x)
y = 30 + 100*x + 10*x*rnorm(n)
a100a = data.frame(x,y)fit2 = lm(y~x,data=a100a)
anova(fit2)
summary(fit2)## scatterplot with smoothed curve
scatter.smooth(x,y)## residual plot
scatter.smooth(x,fit2$residuals)
abline(h=0)
检验残差正态性
# test normality of residuals
hours = c(75,76,77,78,79,80,81,82,83,84,85,86,87)
lotsize = c(642,644,656,667,673,688,696,698,713,717,725,742,757)
toluca = data.frame(hours,lotsize)
reg =lm(hours~lotsize, data = toluca)
resid = resid(reg)## normal qq plot
qqp <- qqnorm(resid)
cor(qqp$x,qqp$y)## shapiro-wilk test
shapiro.test(resid)
检验离群值
# test outliers of residuals
x = seq(1,100,by=5)
n = length(x)
y = 30 + 50*x + 200*rnorm(n)
x = c(x,100)
y = c(y,30+50*100-10000)#the last pair is the outlier
a100c1 = data.frame(x,y)## with outlier
fit5 = lm(y~x,data = a100c1)
anova(fit5)
summary(fit5)## without outlier
fit6 = lm(y~x,data = a100c1[-(n+1),])
anova(fit6)
summary(fit6)plot(y~x, data =a100c1)
abline(fit5)
abline(fit6,col = 'red')plot(fit5$residuals ~ x, data = a100c1)
abline(h=0)
模型补救(Box-Cox 变换)
#### 模型补救措施
## make transformations
library(MASS)
age = c(0,0,1,1,2,3,3,4,4)
plasma = c(13.44,12.84,10.11,11.38,9.83,7.94,6.01,4.86,6.23)
lplasma = c(1.1284,1.1086,1.0048,1.0561,0.9926,0.8998,0.7789,0.6866,0.7945)
a1 = data.frame(age,plasma,lplasma)
hist(a1$plasma)
plot(a1$age,a1$plasma)## box-cox transformation
boxcox(plasma ~ age, data = a1, lambda = seq(-1.5, 05, length = 10))
loglike <- boxcox(plasma~age, data=a1, lambda = seq(-1.5,.5,length=10))
loglike$x[which.max(loglike$y)]## first, get the geometric mean
n <- nrow(a1)
k2 <- (prod(a1$plasma))^(1/n)
lambda <- seq(-1,1,by=0.1)
# or k2 = exp(mean(log(a1$plasma)))## get the transformed data set a2
transformed <- NULL
for(i in 1:length(lambda)){k1 <- 1/(lambda[i]*k2^(lambda[i]-1))trans_y <- if(lambda[i] == 0){k2*(log(a1$plasma))}else{k1*((a1$plasma)^lambda[i]-1)}a2 <- cbind(a1, lambda = rep(lambda[i],n), trans_y)transformed <- rbind(transformed, a2)
}## extract SSE's of linear regressions by lambda
sse <- by(transformed, transformed[,"lambda"], function(x) anova(lm(trans_y~age,data=x))[,2][2])
plot(sse~lambda, type = "l")
R语言笔记4_模型诊断(关于残差)相关推荐
- R语言计算回归模型学生化残差(Studentized Residuals)实战:如果样本学生化残差(Studentized Residuals)绝对值大于3则是离群值
R语言计算回归模型学生化残差(Studentized Residuals)实战:如果样本学生化残差(Studentized Residuals)绝对值大于3则是离群值 目录
- (R,线性回归)R语言里的模型诊断图(Residuals vs Fitted,Normal QQ , Scale-Location ,Residuals Leverage)
线性回归,是概率统计学里最重要的统计方法,也是机器学习中一类非常重要的算法.线性模型简单理解非常容易,但是内涵是非常深奥的.尤其是线性回归模型中的Diagnostics plot的阅读与理解一直被认为 ...
- R语言构建回归模型并进行模型诊断(线性关系不满足时)、进行变量变换(Transforming variables)、使用car包中的boxTidwell函数对预测变量进行Box–Tidwell变换
R语言构建回归模型并进行模型诊断(线性关系不满足时).进行变量变换(Transforming variables).使用car包中的boxTidwell函数对预测变量进行Box–Tidwell变换 目 ...
- R语言计算回归模型标准化残差实战(Standardized Residuals):识别回归模型中离群点
R语言计算回归模型标准化残差实战(Standardized Residuals):识别回归模型中离群点 目录
- R语言可视化回归模型的残差直方图并进行残差分析(Histogram of Residuals)
R语言可视化回归模型的残差直方图并进行残差分析(Histogram of Residuals) 目录 R语言可视化回归模型的残差
- R语言自定义编写函数生成学生化残差的直方图(dist of studentized residuals),并叠加标准正太曲线、核密度曲线、轴须图rug曲线、检验模型是否满足正态性(normality)
R语言自定义编写函数生成学生化残差的直方图(Distribution of studentized residuals),并叠加标准正太曲线.核密度曲线.轴须图rug曲线.检验模型是否满足正态性(no ...
- R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列
原文链接:http://tecdat.cn/?p=23934 在本文中,我们将尝试为苹果公司的日收益率寻找一个合适的 GARCH 模型(点击文末"阅读原文"获取完整代码数据). 相 ...
- 基于R语言混合效应模型(mixed model)案例研究
全文链接: http://tecdat.cn/?p=2596 在本文中,我们描述了灵活的竞争风险回归模型.回归模型被指定为转移概率,也就是竞争性风险设置中的累积发生率(点击文末"阅读原文&q ...
- R语言用GARCH模型波动率建模和预测、回测风险价值 (VaR)分析股市收益率时间序列...
原文链接:http://tecdat.cn/?p=26897 风险价值 (VaR) 是金融风险管理中使用最广泛的市场风险度量,也被投资组合经理等从业者用来解释未来市场风险(点击文末"阅读原文 ...
最新文章
- 【数字图像】数字图像处理博客汇总
- c语言equal,C ++中的ratio_equal()示例
- Java中文件的创建
- strace动态调试 php,PHP实现通过strace定位故障原因的方法
- Github | 机器人工具大全
- 不同用户同时并发测压_教你 7 招,迅速提高服务器并发能力!
- 漫漫长路十多小时,谁是机上WiFi的“业界良心”?
- Springboot集成BeanValidation扩展二:加载jar中的资源文件
- Crush Crouse 心理学笔记
- gradle java ide_用最简单的gradle代码,解决你java项目中的jar依赖之苦
- 我要彻底搞懂SSD网络结构(1)VGG部分
- 十六进制转换成二进制matlab,在matlab中十六进制到二进制和十进制
- ffmpeg常用操作 - 录屏 - 转码
- Chrome浏览器快捷键大全
- 【开源访谈】ECharts 作者 林峰 访谈实录
- App ID申请(将项目中的ID向苹果申请)
- 2021年最新WHQL认证申请流程
- matlab 功率谱密度 汉宁窗_【转】功率谱密度相关方法的MATLAB实现
- 值得收藏的5个C++网站
- 无敌破坏王-高清在线观看