广义线性模型与广义加性模型

时间:2019-11-02 17:33:09

标签: r glm gam

我正在尝试遵循本文:Using a data science approach to predict cocaine use frequency from depressive symptoms,他们使用glm,gam和beck存货低迷。因此,我确实找到了类似的数据集来测试这些模型。但是我在使用这两种模型时都遇到了困难。例如,我有两个变量d64a和d64b,它们分别用1,2,3,4编码,表示它们是序数。此外,在论文中y2的值仅为1,但我还有一个变量Extra(可以依赖于消耗的比例)

对于GAM模型,我有:

b<-gam(y2~s(d64a)+s(d64b),data=DATOS2)

但是我遇到以下错误:

Error in smooth.construct.tp.smooth.spec(object, dk$data, dk$knots) : 
  A term has fewer unique covariate combinations than specified maximum degrees of freedom

与此同时,我有以下内容:

d<-glm(y2~d64a+d64b,data=DATOS2)

我不知道,因为d64a和d64b是序数,我必须使用factor()吗?

1 个答案:

答案 0 :(得分:1)

错误消息告诉您d64ad64b中的一个或两个都不具有 9 (九个)唯一值。

默认情况下,s(...)将创建具有9个功能的基础。如果协变量中的唯一值少于9个,则会出现此错误。

使用以下方法检查哪些协变量会受到影响:

length(unique(d64a))
length(unique(d64b))

,然后查看您希望包含的每个协变量的唯一值数量。然后将k参数设置为上面返回的数字(如果小于9)。例如,假设上述检查返回了57唯一的协变量,那么您可以通过如下设置k来表明这一点:

b <- gam(y2 ~ s(d64a, k = 5) + s(d64b, k = 7), data = DATOS2)