我正在尝试遵循本文: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()吗?
答案 0 :(得分:1)
错误消息告诉您d64a
和d64b
中的一个或两个都不具有 9 (九个)唯一值。
默认情况下,s(...)
将创建具有9个功能的基础。如果协变量中的唯一值少于9个,则会出现此错误。
使用以下方法检查哪些协变量会受到影响:
length(unique(d64a))
length(unique(d64b))
,然后查看您希望包含的每个协变量的唯一值数量。然后将k
参数设置为上面返回的数字(如果小于9)。例如,假设上述检查返回了5
和7
唯一的协变量,那么您可以通过如下设置k
来表明这一点:
b <- gam(y2 ~ s(d64a, k = 5) + s(d64b, k = 7), data = DATOS2)