我使用gam包中的mgcv拟合了通用加性模型。我有一个数据表,其中包含我的因变量Y,一个自变量X,其他自变量Oth和一个两级因子Fac。我想适合以下型号
Y ~ s(X) + Oth
但是附加的约束条件是s(X)项仅适合因子的两个级别之一,即Fac==1。其他术语Oth应该适合整个数据。

我尝试探索s(X,by=Fac),但这会使Oth适合。换句话说,我想表达一种信念,即X仅在Y时才与Fac==1相关,否则对X建模是没有意义的。

最佳答案

如果我理解正确,那么您正在考虑一种具有以下交互作用的模型:

Y ~ 0th + (Fac==1)*s(X)

如果要“仅在X时才表达YFac==1相关的信念”,请不要将Fac视为factor,而应将其视为numeric变量。在这种情况下,您将获得numeric交互和只有一组coefficients(当它是factor时,其中有两个)。这种类型的模型是varying coefficient model
# some data
data <- data.frame(th = runif(100),
              X = runif(100),
              Y = runif(100),
              Fac = sample(0:1, 100, TRUE))
data$Fac<-as.numeric(as.character(data$Fac)) #change to numeric
# then run model
gam(Y~s(X, by=Fac)+th,data=data)

请参阅文档by中的?s选项文档

关于R:适合数据子集的GAM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34135531/

10-12 17:33