#r #gam
Вопрос:
Я пытаюсь создать гамму популяций зоопланктона (в зависимости от временных переменных), в которой sample_site (категориальная переменная) оказывает случайное влияние на популяции (ретрокурва-вид зоопланктона).
jr1 <- gamm(retrocurva ~ s(DOY, by = "Sample_site") s(Year, by = "Sample_site") s(Sample_site, bs = "re"), data = zooskeleton2)
но я продолжаю получать эту ошибку:
Error in terms.formula(formula, data = data) : invalid model formula in ExtractVars
Код работает, если я внесу эти изменения:
jr1 <- gamm(retrocurva ~ s(DOY) s(Year), data = zooskeleton2)
но в тот момент, когда я добавляю Sample_Site обратно (даже не указывая его в s())…
jr1 <- gamm(retrocurva ~ s(DOY) s(Year) s(Sample_site), data = zooskeleton2)
Я получаю эту ошибку:
Error in names(dat) <- object$term : 'names' attribute [1] must be the same length as the vector [0]
Есть какие-нибудь идеи о том, что я делаю не так? Вот подмножество фрейма данных «zooskeleton2», с которым я работаю для справки.
retrocurva Sample_site DOY Year
<dbl> <chr> <dbl><dbl>
5.054528e-01 3-996 137 1995
7.192713e-01 3-996 137 1995
1.827290e-01 8-994 137 1995
7.925904e-01 8-994 137 1995
5.506497e-01 27-918 142 1995
2.001039e-01 29-905 142 1995
5.606469e-01 36-873 143 1995
4.903655e-01 37-890 143 1995
6.504399e 01 14-972 152 1995
5.058930e 01 16-970 152 1995
Ответ №1:
Есть две проблемы:
- вам нужно кодировать
Sample_site
как фактор, и - вам нужно передать эту переменную в
by
аргумент без кавычек
Это должно все исправить:
zooskeleton2 <- transform(zooskeleton2, Sample_site = factor(Sample_site))
jr1 <- gamm(retrocurva ~ s(DOY, by = Sample_site)
s(Year, by = Sample_site)
s(Sample_site, bs = "re"),
data = zooskeleton2)