當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R smooth.construct.sz.smooth.spec GAM 中的約束因子平滑交互


R語言 smooth.construct.sz.smooth.spec 位於 mgcv 包(package)。

說明

構建因子平滑交互作用以排除主效應(以及低階因子平滑交互作用)。為所提供的因子水平的每個組合構建平滑。通過適當應用總和到零對比與跨因子水平的等效平滑係數,可以實現所需的低階效應排除。

有關替代因子平滑交互的信息,請參閱factor.smooth

用法

## S3 method for class 'sz.smooth.spec'
smooth.construct(object, data, knots)
## S3 method for class 'sz.interaction'
Predict.matrix(object, data)

參數

object

對於 smooth.construct 方法,平滑規範對象,通常由術語 s(x,...,bs="sz",) 生成。對於 predict.Matrix 方法,由 smooth.construct 方法生成的類 "sz.interaction" 的對象。

data

僅包含該術語所需的數據(包括任何 by 變量)的列表,其名稱對應於 object$term

knots

包含為順利基礎設置提供的任何結的列表。

細節

此類為所提供的因子變量的級別的每個組合生成平滑。例如,s(fac,x,bs="sz")fac 的每個級別生成 x 的平滑。平滑被限製為表示與主效應平滑的偏差,因此諸如

可以以可識別的方式進行估計,其中 表示適用於第 i 個觀測值的某些因子的水平。通過約束表示 的樣條係數來確保這種情況下的可識別性。特別是,如果 的第 i 個係數,則約束為

這種歸零約束是使用歸零對比來實現的:單位矩陣附加了額外的 -1 行。首先考慮單一因子的情況。與每個因子級別的平滑相對應的模型矩陣是因子的模型矩陣與平滑的模型矩陣的行張量積(請參閱tensor.prod.model.matrix)。對比度矩陣是該因子與零對比度之和的克羅內克乘積,以及由平滑係數的數量確定的維數單位矩陣。

如果有多個因子,則總體模型矩陣是所有因子模型矩陣和平滑矩陣的行克羅內克乘積,而對比度是因子的所有 sum-to-zero 對比度和最終單位矩陣的克羅內克乘積。請注意,這種構造意味著因子的主要影響(以及任何相互作用)包含在因子水平相關的平滑中。換句話說,各個平滑線並非均居中。這意味著添加因子的主效應或相互作用將導致排名不足的模型。

這些項可以具有每個平滑的平滑參數,或用於所有平滑的單個平滑參數。後者是通過為平滑項指定 id 來指定的。例如s(fac,x,bs="sz",id=1)

可以通過提供一個列表作為 sxt 參數以及 bs 項來選擇平滑的基礎。例如s(fac,x,xt=list(bs="cr")) 選擇"cr" 基礎。默認為"tp"

此類的繪圖方法有兩種方案。 scheme==0 是彩色的,而 scheme==1 是黑白的。目前它僅適用於一維平滑。

"sz.interaction" 的對象或將因子平滑交互的係數映射到平滑本身的矩陣。

例子

library(mgcv)
set.seed(0)
dat <- gamSim(4)

b <- gam(y ~ s(x2)+s(fac,x2,bs="sz")+s(x0),data=dat,method="REML")
plot(b,pages=1)
summary(b)

## Example involving 2 factors

f1 <- function(x2) 2 * sin(pi * x2)
f2 <- function(x2) exp(2 * x2) - 3.75887
f3 <- function(x2) 0.2 * x2^11 * (10 * (1 - x2))^6 + 10 * (10 * x2)^3 * 
            (1 - x2)^10

n <- 600
x <- runif(n)
f1 <- factor(sample(c("a","b","c"),n,replace=TRUE))
f2 <- factor(sample(c("foo","bar"),n,replace=TRUE))

mu <- f3(x)
for (i in 1:3) mu <- mu + exp(2*(2-i)*x)*(f1==levels(f1)[i])
for (i in 1:2) mu <- mu + 10*i*x*(1-x)*(f2==levels(f2)[i])
y <- mu + rnorm(n)
dat <- data.frame(y=y,x=x,f1=f1,f2=f2)
b <- gam(y ~ s(x)+s(f1,x,bs="sz")+s(f2,x,bs="sz")+s(f1,f2,x,bs="sz",id=1),data=dat,method="REML")
plot(b,pages=1,scale=0)



作者

Simon N. Wood simon.wood@r-project.org with input from Matteo Fasiolo.

也可以看看

gam.modelsgammfactor.smooth

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Constrained factor smooth interactions in GAMs。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。