当前位置:  开发笔记 > 编程语言 > 正文

R:适合数据子集的GAM

如何解决《R:适合数据子集的GAM》经验,为你挑选了1个好方法。

我适合使用广义加模式gammgcv包.我有一个数据表,包含我的因变量Y,一个自变量X,其他自变量Oth和一个两级因子Fac.我想适合以下模型

Y ~ s(X) + Oth

但是,附加约束条件是该s(X)术语仅适用于因子的两个等级之一Fac==1.其他术语Oth应与整个数据相符.

我尝试过探索,s(X,by=Fac)但这会偏向于适合Oth.换句话说,我想表达的信念X涉及到Y只有Fac==1,否则就没有意义模型X.



1> 小智..:

廉价技巧:如果Fac == 1则使用X的辅助变量,其他地方使用0.

library("mgcv")
library("ggplot2")


# simulate data

N <- 1e3

dat <- data.frame(covariate = runif(N),
                  predictor = runif(N),
                  group = factor(sample(0:1, N, TRUE)))

dat$outcome <- rnorm(N,
                     1 * dat$covariate +
                     ifelse(dat$group == 1,
                            .5 * dat$predictor +
                            1.5 * sin(dat$predictor * pi),
                            0), .1)

# some plots

ggplot(dat, aes(x = predictor, y = outcome,
                col = group, group = group)) +
    geom_point()

ggplot(dat, aes(x = covariate, y = outcome,
                col = group, group = group)) +
    geom_point()

# create auxiliary variable

dat$aux <- ifelse(dat$group == 1,
                  dat$predictor,
                  0)

# fit the data

fit1 <- gam(outcome ~ covariate + s(predictor, by = group),
            data = dat)

fit2 <- gam(outcome ~ covariate + s(aux, by = group),
            data = dat)

# compare fits

summary(fit1)

summary(fit2)

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有