Обобщенная линейная модель и Обобщенная аддитивная модель - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь следовать этой статье: Использование подхода к науке о данных для прогнозирования частоты употребления кокаина по симптомам депрессии , когда они используют glm, gam с депрессией инвентаря Бека. Поэтому я нашел похожий набор данных для тестирования этих моделей. Однако мне тяжело с обеими моделями. Например, у меня есть две переменные 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

Между тем для glm у меня есть следующее:

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

Я не знаю, поскольку d64a и d64b являются порядковыми, у меня естьиспользовать коэффициент ()?

1 Ответ

1 голос
/ 04 ноября 2019

В сообщении об ошибке сообщается, что одно или оба из d64a и d64b не имеют 9 (девяти) уникальных значений.

По умолчанию s(...) создастоснова с девятью функциями. Вы получите эту ошибку, если в ковариате меньше девяти уникальных значений.

Проверьте, на какие ковариаты влияют, используя:

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

и посмотрите, какое количество уникальных значений для каждого изковариаты, которые вы хотите включить. Затем установите аргумент k на число, возвращенное выше, если оно меньше девяти. Например, предположим, что вышеупомянутые проверки вернули 5 и 7 уникальных ковариат, тогда вы можете указать это, установив k следующим образом:

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