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_模型诊断(关于残差)相关推荐

  1. R语言计算回归模型学生化残差(Studentized Residuals)实战:如果样本学生化残差(Studentized Residuals)绝对值大于3则是离群值

    R语言计算回归模型学生化残差(Studentized Residuals)实战:如果样本学生化残差(Studentized Residuals)绝对值大于3则是离群值 目录

  2. (R,线性回归)R语言里的模型诊断图(Residuals vs Fitted,Normal QQ , Scale-Location ,Residuals Leverage)

    线性回归,是概率统计学里最重要的统计方法,也是机器学习中一类非常重要的算法.线性模型简单理解非常容易,但是内涵是非常深奥的.尤其是线性回归模型中的Diagnostics plot的阅读与理解一直被认为 ...

  3. R语言构建回归模型并进行模型诊断(线性关系不满足时)、进行变量变换(Transforming variables)、使用car包中的boxTidwell函数对预测变量进行Box–Tidwell变换

    R语言构建回归模型并进行模型诊断(线性关系不满足时).进行变量变换(Transforming variables).使用car包中的boxTidwell函数对预测变量进行Box–Tidwell变换 目 ...

  4. R语言计算回归模型标准化残差实战(Standardized Residuals):识别回归模型中离群点

    R语言计算回归模型标准化残差实战(Standardized Residuals):识别回归模型中离群点 目录

  5. R语言可视化回归模型的残差直方图并进行残差分析(Histogram of Residuals)

    R语言可视化回归模型的残差直方图并进行残差分析(Histogram of Residuals) 目录 R语言可视化回归模型的残差

  6. R语言自定义编写函数生成学生化残差的直方图(dist of studentized residuals),并叠加标准正太曲线、核密度曲线、轴须图rug曲线、检验模型是否满足正态性(normality)

    R语言自定义编写函数生成学生化残差的直方图(Distribution of studentized residuals),并叠加标准正太曲线.核密度曲线.轴须图rug曲线.检验模型是否满足正态性(no ...

  7. R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列

    原文链接:http://tecdat.cn/?p=23934 在本文中,我们将尝试为苹果公司的日收益率寻找一个合适的 GARCH 模型(点击文末"阅读原文"获取完整代码数据). 相 ...

  8. 基于R语言混合效应模型(mixed model)案例研究

    全文链接: http://tecdat.cn/?p=2596 在本文中,我们描述了灵活的竞争风险回归模型.回归模型被指定为转移概率,也就是竞争性风险设置中的累积发生率(点击文末"阅读原文&q ...

  9. R语言用GARCH模型波动率建模和预测、回测风险价值 (VaR)分析股市收益率时间序列...

    原文链接:http://tecdat.cn/?p=26897 风险价值 (VaR) 是金融风险管理中使用最广泛的市场风险度量,也被投资组合经理等从业者用来解释未来市场风险(点击文末"阅读原文 ...

最新文章

  1. 【数字图像】数字图像处理博客汇总
  2. c语言equal,C ++中的ratio_equal()示例
  3. Java中文件的创建
  4. strace动态调试 php,PHP实现通过strace定位故障原因的方法
  5. Github | 机器人工具大全
  6. 不同用户同时并发测压_教你 7 招,迅速提高服务器并发能力!
  7. 漫漫长路十多小时,谁是机上WiFi的“业界良心”?
  8. Springboot集成BeanValidation扩展二:加载jar中的资源文件
  9. Crush Crouse 心理学笔记
  10. gradle java ide_用最简单的gradle代码,解决你java项目中的jar依赖之苦
  11. 我要彻底搞懂SSD网络结构(1)VGG部分
  12. 十六进制转换成二进制matlab,在matlab中十六进制到二进制和十进制
  13. ffmpeg常用操作 - 录屏 - 转码
  14. Chrome浏览器快捷键大全
  15. 【开源访谈】ECharts 作者 林峰 访谈实录
  16. App ID申请(将项目中的ID向苹果申请)
  17. 2021年最新WHQL认证申请流程
  18. matlab 功率谱密度 汉宁窗_【转】功率谱密度相关方法的MATLAB实现
  19. 值得收藏的5个C++网站
  20. 无敌破坏王-高清在线观看

热门文章

  1. WiFi共享精灵自身存在的优势
  2. 经济危机会影响软件质量吗?
  3. Android各版本特性
  4. 目前流行的Bug缺陷管理工具
  5. Android TabLayout基本使用及完美调整指示器位置的技巧
  6. 双十一销量预测_双十一历年销售额盘点 2020年双十一销售额预测
  7. 手机6120C 玩仙剑dos版
  8. 【AIX】AIX内存机制
  9. ST-LINK固件升级
  10. m基于simulink的麦克纳姆轮Back-Stepping控制系统仿真