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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。