gfam
位于 mgcv
包(package)。 说明
与 gam
或 bam
一起使用的系列,允许单变量响应向量由来自多个不同分布的变量组成。响应变量以 2 列矩阵的形式提供,其中第一列包含响应观测值,第二列索引其来源的分布(族)。 gfam
将族列表作为其单个参数。
对于通过共享某些组件的模型链接的不同源的数据进行建模非常有用。不共享的平滑模型组件通常使用 by
变量进行处理(请参阅 gam.models
)。
用法
gfam(fl)
参数
fl |
家庭名单。这些可以是继承自 |
细节
gfam
的每个组件函数使用列表 fl
中提供的族来获取该族数据子集所需的数量,并适当地组合结果。例如,它通过计算应用于其数据子集的族特定偏差和每个族的导数并对它们求和,提供模型的总偏差(两倍负对数似然)及其导数。其他量的计算方法相同。
正则指数族计算的数量与扩展族不同,因此 gfam
在内部将这些族产生的结果转换为 extended.family
形式。
显然,尺度参数必须针对每个族单独处理,并被视为要估计的参数,就像其他extended.family
非位置分布参数一样。这又是在内部处理的。此要求是始终生成 extended.family
的部分原因,即使 fl
的所有元素都是标准指数族也是如此。因此,平滑参数估计总是通过 REML 或 NCV 进行。
请注意,零偏差目前是通过假设每个系列的单个参数模型而不是仅一个参数来计算的,这可能会稍微降低解释的偏差。还要注意,残差检查可能应该通过按家庭分解残差来完成。因此,不提供函数来促进 qq.gam
的残差检查。
对响应量表的预测需要提供家族索引向量以及响应名称,作为新预测数据的一部分。但是,诸如 ocat
等通常为预测类型 "response"
生成矩阵预测的系列,在成为 gfam
的一部分时将无法执行此操作。
gfam
依赖于 Wood、Pya 和 Saefken (2016) 中的方法。
值
类 extended.family
的对象。
例子
library(mgcv)
## a mixed family simulator function to play with...
sim.gfam <- function(dist,n=400) {
## dist can be norm, pois, gamma, binom, nbinom, tw, ocat (R assumed 4)
## links used are identitiy, log or logit.
dat <- gamSim(1,n=n,verbose=FALSE)
nf <- length(dist) ## how many families
fin <- c(1:nf,sample(1:nf,n-nf,replace=TRUE)) ## family index
dat[,6:10] <- dat[,6:10]/5 ## a scale that works for all links used
y <- dat$y;
for (i in 1:nf) {
ii <- which(fin==i) ## index of current family
ni <- length(ii);fi <- dat$f[ii]
if (dist[i]=="norm") {
y[ii] <- fi + rnorm(ni)*.5
} else if (dist[i]=="pois") {
y[ii] <- rpois(ni,exp(fi))
} else if (dist[i]=="gamma") {
scale <- .5
y[ii] <- rgamma(ni,shape=1/scale,scale=exp(fi)*scale)
} else if (dist[i]=="binom") {
y[ii] <- rbinom(ni,1,binomial()$linkinv(fi))
} else if (dist[i]=="nbinom") {
y[ii] <- rnbinom(ni,size=3,mu=exp(fi))
} else if (dist[i]=="tw") {
y[ii] <- rTweedie(exp(fi),p=1.5,phi=1.5)
} else if (dist[i]=="ocat") {
alpha <- c(-Inf,1,2,2.5,Inf)
R <- length(alpha)-1
yi <- fi
u <- runif(ni)
u <- yi + log(u/(1-u))
for (j in 1:R) {
yi[u > alpha[j]&u <= alpha[j+1]] <- j
}
y[ii] <- yi
}
}
dat$y <- cbind(y,fin)
dat
} ## sim.gfam
## some examples
dat <- sim.gfam(c("binom","tw","norm"))
b <- gam(y~s(x0)+s(x1)+s(x2)+s(x3),
family=gfam(list(binomial,tw,gaussian)),data=dat)
predict(b,data.frame(y=1:3,x0=c(.5,.5,.5),x1=c(.3,.2,.3),
x2=c(.2,.5,.8),x3=c(.1,.5,.9)),type="response",se=TRUE)
summary(b)
plot(b,pages=1)
## set up model so that only the binomial observations depend
## on x0...
dat$id1 <- as.numeric(dat$y[,2]==1)
b1 <- gam(y~s(x0,by=id1)+s(x1)+s(x2)+s(x3),
family=gfam(list(binomial,tw,gaussian)),data=dat)
plot(b1,pages=1) ## note the CI width increase
作者
Simon N. Wood simon.wood@r-project.org
参考
Wood, S.N., N. Pya and B. Saefken (2016), Smoothing parameter and model selection for general smooth models. Journal of the American Statistical Association 111, 1548-1575 doi:10.1080/01621459.2016.1180986
相关用法
- R gam.check 拟合 gam 模型的一些诊断
- R gam.reparam 寻找平方根惩罚的稳定正交重新参数化。
- R gam.side GAM 的可识别性边条件
- R gamm 广义加性混合模型
- R gamlss.gH 计算回归系数的对数似然导数
- R gam.fit3 使用 GCV、UBRE/AIC 或 RE/ML 导数计算进行 P-IRLS GAM 估计
- R gam.fit5.post.proc gam.fit5 的后处理输出
- R gam.fit GAM P-IRLS 估计与 GCV/UBRE 平滑度估计
- R gam 具有集成平滑度估计的广义加性模型
- R gaulss 高斯位置尺度模型族
- R gumbls Gumbel 位置比例模型族
- R gam.mh 具有 gam 拟合的简单后验模拟
- R gam.control 设置 GAM 拟合默认值
- R gevlss 广义极值位置比例模型族
- R gam2objective GAM 平滑参数估计的目标函数
- R gam.outer 使用“外部”迭代最小化 GAM 的 GCV 或 UBRE 分数
- R gamlss.etamu 将 mu 的导数转换为线性预测器的导数
- R gam.vcomp 将 gam 平滑度估计报告为方差分量
- R gammals 伽玛位置比例模型系列
- R gam.models 指定广义加性模型
- R gamSim 模拟 GAM 的示例数据
- R ginla GAM 集成嵌套拉普拉斯逼近牛顿增强
- R gam.selection 广义加性模型选择
- R get.var 从列表或 data.frame 中获取命名变量或计算表达式
- R vcov.gam 从 GAM 拟合中提取参数(估计器)协方差矩阵
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Grouped families。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。