UA MATH571A QE练习 R语言 非参数回归 上
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 )
这个散点图反映出三个特征:
- 数据存在replicate;
- 整体呈现模特平均BMI逐年下降的趋势;
- 数据显然不是线性的
下面用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))
从上面三组结果的比较我们可以得出两个结论:
- 基本可以认定非参数回归曲线是平坦的,虽然q=0.33q=0.33q=0.33时比较弯曲,但此时的非参数回归曲线并不够平滑,不能体现出数据的趋势;
- 非参数回归做诊断的结果对超参比较敏感;
UA MATH571A QE练习 R语言 非参数回归 上相关推荐
- UA MATH571A QE练习 R语言 单因子试验的回归分析
UA MATH571A QE练习 R语言 单因子试验的回归分析 2015年5月的第六题是单因子试验,因为历年只有这一道,所以单独做一下. 土壤中的硅主要以硅酸盐矿物的形式存在,受成土母质和成土过程的影 ...
- UA MATH571A QE练习 R语言 多重共线性与岭回归
UA MATH571A QE练习 R语言 多重共线性与岭回归 QE回归2017年1月的第4题目的是通过高中成绩排名(X1X_1X1)与ACT分数(X2X_2X2)预测大学第一年的GPA(YYY). ...
- UA MATH571A 检验异方差的非参数回归方法
UA MATH571A 检验异方差的非参数回归方法 LOESS(locally estimated scatterplot smoothing) LOWESS(Robust Locally Weigh ...
- R语言课上笔记(第1-4天)
1. 第一天笔记 推荐的书籍: <R数据科学>推荐–<R语言入门与实践> <R语言与数据分析实战>–韩国人 <R语言数据可视化之美>–绘图 安装注意事项 ...
- r 语言 ggplot上添加平均值_技术贴 | R语言:ggplot堆叠图、冲积图、分组分面、面积图...
点击蓝字↑↑↑"微生态",轻松关注不迷路 利用R语言堆叠图,我们可以将一个项目中所有样品的物种组成展示出来.下面介绍如何利用R语言进行物种组成分析和可视化.过程分为以下几步: 1) ...
- R语言直方图上的频数字体大小怎么设置
正在学习R语言,有些地方不是太懂,查了半天没查到,希望向大佬们请教一下 下面是我敲的一个直方图的代码和图 我主要是想问下,我直方图上面就那些频数怎么调大,因为图保存下来放到word里显示太小了 谢谢, ...
- r 语言 ggplot上添加平均值_R语言中ggplot2包作数据分布情况下的统计图实例学习(一)
1.小提琴图 小提琴图可以可视化一组或几组数字变量的分布. 问题:您想制作一个小提琴图来比较不同组的密度估计.用gcookbook包与ggplot2包分别绘制. 解决问题: 使用geom_violin ...
- r 语言 ggplot上添加平均值_R语言自定义两种统计量度:平均值和中位数,何时去使用?
原文链接: http://tecdat.cn/?p=11085tecdat.cn 最常用的两种统计量度是平均值和中位数.两种度量均指示分布的中心值,即预期大多数数据点所处的值.但是,在许多应用程序中 ...
- R语言编程 第一讲 变量与赋值
R语言编程 第一讲 变量与赋值 R语言的变量名 赋值符号 <- 与 = 的区别 赋值符号 <- 的更多细节 Copy-on-Modify与Modify-in-Place 函数调用 列表 数 ...
最新文章
- 机器学习入门(01)— 感知机概念、实现、局限性以及多层感知机
- php web目录结构,目录结构
- 利用velocity模板以及itext生成pdf
- 2009年下半年信息系统项目管理师上午试题分析与解答文档
- java正则匹配英文句号_Scala 正则表达式 0411
- mvc+ef中比较数据
- 计算机二级ps教程 百度云,全国计算机等级考试一级Photoshop模拟题及解析第六套(完整版).pdf...
- HTML5网站大观:分享8个精美的 HTML5 网站案例
- html文档的三大元素,html文件构成-HTML文档的三大组成元素不包括?HTML文档的三大组成元素不包 爱问知识人...
- javascript 网页运行代码效果
- 软件测试工程师必备知识点
- 【Tpshop商城使用】
- python项目实战:控制Windows电脑桌面壁纸
- C语言编程>第二十二周 ③ 下列给定的程序中,函数fun的功能是根据整型形参n,计算如下公式的值:
- Codeforces Round #789 (Div. 1) B. Tokitsukaze and Meeting
- 强大的虚拟音频器:Loopback for Mac
- jsp+servlet实现的简单登录验证
- SNP/单核苷酸多态性分析
- 简易客房管理系统(C++)
- java.net.UnknownHostException 请求地址出现异常问题
热门文章
- (转载)Android性能优化典范
- 六个月学php,修学六个月心得体会
- java动态字段排序_JAVA 列表动态增加字段显示和任意字段排序
- 函数返回引用什么意思_【20200917】编程入门第七课,函数(function)
- 自己动手写一个nodejs的日志生成器
- sql like语句中的通配符:百分号、下划线和escape
- Sculpture ACM/ICPC NWERC 2008 离散化
- [简单题]自定义取余(三种解法)C++实现
- 利用Matlab比较IIR和FIR,细说IIR滤波器和FIR滤波器的区别
- 设置placeholder无效解决办法