UA MATH571A QE练习 R语言 非参数回归上

  • 2014年5月第五题
  • 2015年1月第四题
  • 2015年5月第四题

这一篇介绍2014年5月第五题、2015年1月第四题、2015年5月第四题。

2014年5月第五题



一项研究试图探索1950年代到2000年代后期北美模特体质比的变化。现在有的数据是BMI平均值的时间序列数据,数据为时间和BMI,时间是月份(字符)+年份(数值),我们先处理一下时间:

q3.df = read.csv( file.choose() )
attach( q3.df )
month.digit = match( Month,month.abb )
date = paste( Year,month.digit,sep='-' )
library( zoo )
month = as.yearmon(date)

第一行选取数据,第二行给它贴个名字,第三行把月份从字符变成数字,第四行把年份和月份用-连起来,接下来就是用as.yearmon这个函数把xxxx-xx型的时间数据变成这种

> as.yearmon("2007-12")
[1] "12月 2007"

变成这种之后有一个好处,就是可以用as.numeric变成数值

> as.numeric(as.yearmon("2007-12"))
[1] 2007.917

转换规则是第iii个月变成小数加在年份后面,转换规则是(i−1)/12(i-1)/12(i−1)/12。把时间做了这些处理之后画出散点图:

month = as.yearmon(date)
x = as.numeric(month);
Y = BMI
plot( Y~x, pch=19 )


这个散点图反映出三个特征:

  1. 数据存在replicate;
  2. 整体呈现模特平均BMI逐年下降的趋势;
  3. 数据显然不是线性的

下面用loess方法拟合一下,

BMI1r.loess = loess( Y~x, span = 0.5, degree = 1, family='symmetric' )
Ysmooth1r = predict( BMI1r.loess, data.frame(x = seq(1953,2009,.25) ))
plot( Y~x, pch=19, xlim=c(1950,2009), ylim=c(15,24) ); par( new=T )
plot( Ysmooth1r~seq(1953,2009,.25), type='l', lwd=2 , xaxt='n',yaxt='n' , xlab='', ylab='', xlim=c(1950,2009), ylim=c(15,24) )


大致可以看出到1983年左右是呈现下降趋势的,1983年之后鲜有回升。残差图如下

plot( resid(BMI1r.loess)~x, pch=19 ); abline( h=0 )


基本是均匀分布在横轴两侧的,但最上面的点疑似异常值。

2015年1月第四题


这道题和上一道非常像,我就不写文字了,数据数隔行存的,读进来很多nan,可以用na.omit去掉。

gapminder.df = read.csv( file.choose() )
G = na.omit(gapminder.df$GDP)
Y = na.omit(gapminder.df$life.expect)
hist( G, prob=T, main='' )
lines ( density(G) )

X = log(G)
plot( Y ~ X, pch=19 )

gapminder.loess = loess( Y~X, span=0.7, degree=1, family='symmetric' )
Ysmooth1r = predict( gapminder.loess, data.frame(X=seq(4,11)) )
plot( Y~X, pch=19, xlim=c(4,11), ylim=c(40,90) ); par( new=T )
plot( Ysmooth1r~seq(4,11), type='l', lwd=2 , xaxt='n',yaxt='n' , xlab='', ylab='', xlim=c(4,11), ylim=c(40,90) )

plot( resid(gapminder.loess)~X, pch=19, ylab='Resid.' ); abline( h=0 )

2015年5月第四题


loess方法或许可以用来做模型诊断,在用线性模型拟合了数据之后,我们可以用loess模型对残差关于拟合值的散点图做一个非参数回归,如果非参数回归曲线不平,就说明有异方差;如果非参数回归曲线比较平,就说明是同方差。

先看一下数据

baseball.df = read.csv( file.choose() )
Y = na.omit(baseball.df$batting.average)
X = na.omit(baseball.df$years)
plot( Y ~ X, pch=19 )


再看一下一元回归残差绝对值关于拟合值的散点图

baseballSLR.lm <- lm(Y ~ X)
absresid = abs(resid(baseballSLR.lm))
Yhat = fitted(baseballSLR.lm)
plot(absresid~Yhat,pch=19)

如果取q=0.75q=0.75q=0.75,则

baseball.lo = loess( absresid~Yhat, span = 0.75, degree = 2,family='symmetric' )
Ysmooth = predict( baseball.lo,data.frame(Yhat = seq(min(Yhat),max(Yhat),.001)) )
plot( absresid~Yhat, xlim=c(.25,.29), ylim=c(0,.11) )
par( new=TRUE )
plot( Ysmooth~seq(min(Yhat),max(Yhat),.001), type='l', lwd=2,xaxt='n', yaxt='n' , xlab='', ylab='', xlim=c(.25,.29), ylim=c(0,.11))

如果取q=0.33q=0.33q=0.33,则

baseball.lo = loess( absresid~Yhat, span = 0.33, degree = 2,family='symmetric' )
Ysmooth = predict( baseball.lo,data.frame(Yhat = seq(min(Yhat),max(Yhat),.001)) )
plot( absresid~Yhat, xlim=c(.25,.29), ylim=c(0,.11) )
par( new=TRUE )
plot( Ysmooth~seq(min(Yhat),max(Yhat),.001), type='l', lwd=2,xaxt='n', yaxt='n' , xlab='', ylab='', xlim=c(.25,.29), ylim=c(0,.11))


如果取q=0.5q=0.5q=0.5,则

baseball.lo = loess( absresid~Yhat, span = 0.5, degree = 2,family='symmetric' )
Ysmooth = predict( baseball.lo,data.frame(Yhat = seq(min(Yhat),max(Yhat),.001)) )
plot( absresid~Yhat, xlim=c(.25,.29), ylim=c(0,.11) )
par( new=TRUE )
plot( Ysmooth~seq(min(Yhat),max(Yhat),.001), type='l', lwd=2,xaxt='n', yaxt='n' , xlab='', ylab='', xlim=c(.25,.29), ylim=c(0,.11))


从上面三组结果的比较我们可以得出两个结论:

  1. 基本可以认定非参数回归曲线是平坦的,虽然q=0.33q=0.33q=0.33时比较弯曲,但此时的非参数回归曲线并不够平滑,不能体现出数据的趋势;
  2. 非参数回归做诊断的结果对超参比较敏感;

UA MATH571A QE练习 R语言 非参数回归 上相关推荐

  1. UA MATH571A QE练习 R语言 单因子试验的回归分析

    UA MATH571A QE练习 R语言 单因子试验的回归分析 2015年5月的第六题是单因子试验,因为历年只有这一道,所以单独做一下. 土壤中的硅主要以硅酸盐矿物的形式存在,受成土母质和成土过程的影 ...

  2. UA MATH571A QE练习 R语言 多重共线性与岭回归

    UA MATH571A QE练习 R语言 多重共线性与岭回归 QE回归2017年1月的第4题目的是通过高中成绩排名(X1X_1X1​)与ACT分数(X2X_2X2​)预测大学第一年的GPA(YYY). ...

  3. UA MATH571A 检验异方差的非参数回归方法

    UA MATH571A 检验异方差的非参数回归方法 LOESS(locally estimated scatterplot smoothing) LOWESS(Robust Locally Weigh ...

  4. R语言课上笔记(第1-4天)

    1. 第一天笔记 推荐的书籍: <R数据科学>推荐–<R语言入门与实践> <R语言与数据分析实战>–韩国人 <R语言数据可视化之美>–绘图 安装注意事项 ...

  5. r 语言 ggplot上添加平均值_技术贴 | R语言:ggplot堆叠图、冲积图、分组分面、面积图...

    点击蓝字↑↑↑"微生态",轻松关注不迷路 利用R语言堆叠图,我们可以将一个项目中所有样品的物种组成展示出来.下面介绍如何利用R语言进行物种组成分析和可视化.过程分为以下几步: 1) ...

  6. R语言直方图上的频数字体大小怎么设置

    正在学习R语言,有些地方不是太懂,查了半天没查到,希望向大佬们请教一下 下面是我敲的一个直方图的代码和图 我主要是想问下,我直方图上面就那些频数怎么调大,因为图保存下来放到word里显示太小了 谢谢, ...

  7. r 语言 ggplot上添加平均值_R语言中ggplot2包作数据分布情况下的统计图实例学习(一)

    1.小提琴图 小提琴图可以可视化一组或几组数字变量的分布. 问题:您想制作一个小提琴图来比较不同组的密度估计.用gcookbook包与ggplot2包分别绘制. 解决问题: 使用geom_violin ...

  8. r 语言 ggplot上添加平均值_R语言自定义两种统计量度:平均值和中位数,何时去使用?

    原文链接: http://tecdat.cn/?p=11085​tecdat.cn 最常用的两种统计量度是平均值和中位数.两种度量均指示分布的中心值,即预期大多数数据点所处的值.但是,在许多应用程序中 ...

  9. R语言编程 第一讲 变量与赋值

    R语言编程 第一讲 变量与赋值 R语言的变量名 赋值符号 <- 与 = 的区别 赋值符号 <- 的更多细节 Copy-on-Modify与Modify-in-Place 函数调用 列表 数 ...

最新文章

  1. 机器学习入门(01)— 感知机概念、实现、局限性以及多层感知机
  2. php web目录结构,目录结构
  3. 利用velocity模板以及itext生成pdf
  4. 2009年下半年信息系统项目管理师上午试题分析与解答文档
  5. java正则匹配英文句号_Scala 正则表达式 0411
  6. mvc+ef中比较数据
  7. 计算机二级ps教程 百度云,全国计算机等级考试一级Photoshop模拟题及解析第六套(完整版).pdf...
  8. HTML5网站大观:分享8个精美的 HTML5 网站案例
  9. html文档的三大元素,html文件构成-HTML文档的三大组成元素不包括?HTML文档的三大组成元素不包 爱问知识人...
  10. javascript 网页运行代码效果
  11. 软件测试工程师必备知识点
  12. 【Tpshop商城使用】
  13. python项目实战:控制Windows电脑桌面壁纸
  14. C语言编程>第二十二周 ③ 下列给定的程序中,函数fun的功能是根据整型形参n,计算如下公式的值:
  15. Codeforces Round #789 (Div. 1) B. Tokitsukaze and Meeting
  16. 强大的虚拟音频器:Loopback for Mac
  17. jsp+servlet实现的简单登录验证
  18. SNP/单核苷酸多态性分析
  19. 简易客房管理系统(C++)
  20. java.net.UnknownHostException 请求地址出现异常问题

热门文章

  1. (转载)Android性能优化典范
  2. 六个月学php,修学六个月心得体会
  3. java动态字段排序_JAVA 列表动态增加字段显示和任意字段排序
  4. 函数返回引用什么意思_【20200917】编程入门第七课,函数(function)
  5. 自己动手写一个nodejs的日志生成器
  6. sql like语句中的通配符:百分号、下划线和escape
  7. Sculpture ACM/ICPC NWERC 2008 离散化
  8. [简单题]自定义取余(三种解法)C++实现
  9. 利用Matlab比较IIR和FIR,细说IIR滤波器和FIR滤波器的区别
  10. 设置placeholder无效解决办法