我使用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
时才表达Y
与Fac==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/