楼主: Bewusstsein
4534 5

[实际应用] R语言怎么使用mgcv包做面板数据的非参数广义可加模型的估计? [推广有奖]

  • 0关注
  • 0粉丝

高中生

85%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
131 点
帖子
13
精华
0
在线时间
48 小时
注册时间
2011-9-17
最后登录
2021-4-23

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
R语言怎么使用mgcv包做面板数据的非参数广义可加模型的估计?希望稍微具体点的~谢谢~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:面板数据 可加模型 R语言 非参数

沙发
DM小菜鸟 发表于 2015-3-30 20:28:39 |只看作者 |坛友微信交流群
library(mgcv)
set.seed(0)
n<-400
sig2<-4
x0 <- runif(n, 0, 1)
x1 <- runif(n, 0, 1)
x2 <- runif(n, 0, 1)
x3 <- runif(n, 0, 1)
pi <- asin(1) * 2
f <- 2 * sin(pi * x0)
f <- f + exp(2 * x1) - 3.75887
f <- f+0.2*x2^11*(10*(1-x2))^6+10*(10*x2)^3*(1-x2)^10-1.396
e <- rnorm(n, 0, sqrt(abs(sig2)))
y <- f + e
b<-gam(y~s(x0)+s(x1)+s(x2)+s(x3))
summary(b)
plot(b,pages=1)
# an extra ridge penalty (useful with convergence problems) ....
bp<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),H=diag(0.5,41))
print(b);print(bp);rm(bp)
# set the smoothing parameter for the first term, estimate rest ...
bp<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),sp=c(0.01,-1,-1,-1))
plot(bp,pages=1);rm(bp)
# set lower bounds on smoothing parameters ....
bp<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),min.sp=c(0.001,0.01,0,10))
print(b);print(bp);rm(bp)

# now a GAM with 3df regression spline term & 2 penalized terms
b0<-gam(y~s(x0,k=4,fx=TRUE,bs="tp")+s(x1,k=12)+s(x2,15))
plot(b0,pages=1)
# now fit a 2-d term to x0,x1
b1<-gam(y~s(x0,x1)+s(x2)+s(x3))
par(mfrow=c(2,2))
plot(b1)
par(mfrow=c(1,1))
# now simulate poisson data
g<-exp(f/5)
y<-rpois(rep(1,n),g)
b2<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),family=poisson)
plot(b2,pages=1)
# and a pretty 2-d smoothing example....
test1<-function(x,z,sx=0.3,sz=0.4)  
{ (pi**sx*sz)*(1.2*exp(-(x-0.2)^2/sx^2-(z-0.3)^2/sz^2)+
  0.8*exp(-(x-0.7)^2/sx^2-(z-0.8)^2/sz^2))
}
n<-500
old.par<-par(mfrow=c(2,2))
x<-runif(n);z<-runif(n);
xs<-seq(0,1,length=30);zs<-seq(0,1,length=30)
pr<-data.frame(x=rep(xs,30),z=rep(zs,rep(30,30)))
truth<-matrix(test1(pr$x,pr$z),30,30)
contour(xs,zs,truth)
y<-test1(x,z)+rnorm(n)*0.1
b4<-gam(y~s(x,z))
fit1<-matrix(predict.gam(b4,pr,se=FALSE),30,30)
contour(xs,zs,fit1)
persp(xs,zs,truth)
vis.gam(b4)
par(old.par)
# very large dataset example using knots
n<-10000
x<-runif(n);z<-runif(n);
y<-test1(x,z)+rnorm(n)
ind<-sample(1:n,1000,replace=FALSE)
b5<-gam(y~s(x,z,k=50),knots=list(x=x[ind],z=z[ind]))
vis.gam(b5)
# and a pure "knot based" spline of the same data
b6<-gam(y~s(x,z,k=100),knots=list(x= rep((1:10-0.5)/10,10),
        z=rep((1:10-0.5)/10,rep(10,10))))
vis.gam(b6,color="heat")


类似这样的吧
用gam做

使用道具

藤椅
baicong 发表于 2015-4-22 19:36:05 |只看作者 |坛友微信交流群
mgcv怎么下载这个软件包啊?

使用道具

板凳
15902057901 发表于 2015-9-24 08:56:40 |只看作者 |坛友微信交流群
DM小菜鸟 发表于 2015-3-30 20:28
library(mgcv)
set.seed(0)
n
你给出的程序是对于截面数据的吧。那面板数据的呢?要怎么写程序呀?

使用道具

报纸
coldif 发表于 2017-9-25 22:12:28 |只看作者 |坛友微信交流群
DM小菜鸟 发表于 2015-3-30 20:28
library(mgcv)
set.seed(0)
n
大神,请问下用GAM模型做流感分析,比如y是流感病例,x1是温度,x2是湿度,gam(y~s(x1)+s(x2)),做出来这个模型,怎么求x1对y影响的作用呢?比如x1,x2哪个对y影响更大,RR之类的,x1改变一个单位,用改变多少。这样的数据要怎么在mgcv里计算呢 ?

使用道具

地板
demonmaggie 发表于 2017-12-19 08:57:49 |只看作者 |坛友微信交流群
coldif 发表于 2017-9-25 22:12
大神,请问下用GAM模型做流感分析,比如y是流感病例,x1是温度,x2是湿度,gam(y~s(x1)+s(x2)),做出来 ...
同问这个问题,不知应该怎么解决,一直没有找到合适的命令

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-21 14:57