楼主: peijianshi
29438 46

[学习分享] 广义可加模型(即GAM)中偏残差图究竟表示什么意思? [推广有奖]

11
peijianshi 发表于 2012-7-12 12:32:06
ywh19860616 发表于 2012-7-10 21:48
是的,您看到比较多了
混合模型和面板数据相似,有2个下标的。
现在一个问题是我用这个模型来研究经济 ...
俺是搞昆虫的,主要分析昆虫数据。
但是俺本科是学会计的,呵呵,略懂一些经济学常识罢了。
R万岁!

12
ywh19860616 发表于 2012-7-12 13:36:28
peijianshi 发表于 2012-7-12 12:30
使用非参数模型(包括GAM, LOESS, 神经网络, 树),出现overfit是不可避免的。因为这些方法大多是let the d ...
谢谢您的解答
恩,现在就是出现这个问题,在利用
mgcv包的gam函数时,默认的gamma=1,
而看到有些书籍上说通常把gamma设置为
gamma=1.4,可以避免或者减轻overfit,
但是我查看了很多资料,没有弄清楚
overfit是何意,即有哪些硬性的指标可以
看出是overfit的。


此外,还有一个choose.k里面的自带例子,有一点也看不懂

  1. library(mgcv)
  2. set.seed(1)
  3. dat <- gamSim(1,n=400,scale=2)

  4. ## fit a GAM with quite low `k'
  5. b<-gam(y~s(x0,k=6)+s(x1,k=6)+s(x2,k=6)+s(x3,k=6),data=dat)
  6. plot(b,pages=1,residuals=TRUE) ## hint of a problem in s(x2)

  7. ## the following suggests a problem with s(x2)
  8. gam.check(b)

  9. ## Another approach (see below for more obvious method)....
  10. ## check for residual pattern, removeable by increasing `k'
  11. ## typically `k', below, chould be substantially larger than
  12. ## the original, `k' but certainly less than n/2.
  13. ## Note use of cheap "cs" shrinkage smoothers, and gamma=1.4
  14. ## to reduce chance of overfitting...
  15. rsd <- residuals(b)
  16. gam(rsd~s(x0,k=40,bs="cs"),gamma=1.4,data=dat) ## fine
  17. gam(rsd~s(x1,k=40,bs="cs"),gamma=1.4,data=dat) ## fine
  18. gam(rsd~s(x2,k=40,bs="cs"),gamma=1.4,data=dat) ## `k' too low
  19. gam(rsd~s(x3,k=40,bs="cs"),gamma=1.4,data=dat) ## fine

  20. ## refit...
  21. b <- gam(y~s(x0,k=6)+s(x1,k=6)+s(x2,k=20)+s(x3,k=6),data=dat)
  22. gam.check(b) ## better
复制代码

上述标注之处如何判断---`k' too low?




请您多多指教。


一份耕耘,一份收获。

13
ywh19860616 发表于 2012-7-12 13:37:46
peijianshi 发表于 2012-7-12 12:32
俺是搞昆虫的,主要分析昆虫数据。
但是俺本科是学会计的,呵呵,略懂一些经济学常识罢了。
哈哈,那跨度好大啊
其实gam模型我看到更多是研究
生物方面的,经济方法稍稍少些。
一份耕耘,一份收获。

14
peijianshi 发表于 2012-7-12 14:02:18
没什么跨度,无非是换了个对象研究罢了。
R万岁!

15
peijianshi 发表于 2012-7-12 14:06:18
ywh19860616 发表于 2012-7-12 13:36
谢谢您的解答
恩,现在就是出现这个问题,在利用
mgcv包的gam函数时,默认的gamma=1,
overfitting表示过度拟合,就是拟合结果和数据吻合太好了。假如数据存在实验偏差,而拟合将根据偏差数据拟合地也将十分完美,可以称为“过度拟合”。最典型的就是使用非参数模型,比如loess(局域回归方式)对单变量的拟合,如果设定的带宽较下,则拟合任何数据几乎都是很高的拟合优度。

你说的那个选项,俺也没用过。我通常用gam软件包。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
ywh19860616 + 1 + 1 + 1 谢谢

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

R万岁!

16
ywh19860616 发表于 2012-7-12 14:22:12
peijianshi 发表于 2012-7-12 14:06
overfitting表示过度拟合,就是拟合结果和数据吻合太好了。假如数据存在实验偏差,而拟合将根据偏差数据 ...
谢谢,您可以关注mgcv包,功能会多些。
一份耕耘,一份收获。

17
peijianshi 发表于 2012-7-13 11:15:29
ywh19860616 发表于 2012-7-12 14:22
谢谢,您可以关注mgcv包,功能会多些。
谢谢!
R万岁!

18
butter212139 发表于 2013-3-25 13:33:09
peijianshi 发表于 2012-7-12 12:30
使用非参数模型(包括GAM, LOESS, 神经网络, 树),出现overfit是不可避免的。因为这些方法大多是let the d ...
您好!看到你的帖子很受启发,我刚开始学R,现在急需要用R的GAM做广义可加自回归模型,用这个模型来拟合数据并进行价格预测。GAM的基本理论还是知道,但用R编程还是一头雾水,想请您给些操作和方法上的建议,谢谢了!

19
peijianshi 发表于 2013-4-2 14:12:03
butter212139 发表于 2013-3-25 13:33
您好!看到你的帖子很受启发,我刚开始学R,现在急需要用R的GAM做广义可加自回归模型,用这个模型来拟合数 ...
有两个R的软件包做广义可加模型: mgcv和gam包。
后者是Hastie博士开发的,但是功能和选项要弱于mgcv。
mgcv是R中自带的包
library("mgcv")
x <- c(...)
y <- c(...)
如果是普通高斯假设,直接
object.gam <- gam(y~x)
即可啦。
R万岁!

20
ywh19860616 发表于 2013-4-12 14:15:58
peijianshi 发表于 2013-4-2 14:12
有两个R的软件包做广义可加模型: mgcv和gam包。
后者是Hastie博士开发的,但是功能和选项要弱于mgcv。
...
您好,想请教下,在估计glm模型时通常需要先
选择link function,如果我的数据只适合于normal,
而模型得到的残存再进行正态性检验时,却不满足
正态性,这时候如何进行?我的理解有错误吗
一份耕耘,一份收获。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 17:12