Неожиданное прогнозируемое значение Y с использованием обобщенной аддитивной модели с гладким членом предиктора в R - PullRequest
0 голосов
/ 31 марта 2020

Я сделал модель GAM о связи между концентрацией морского мусора (как переменная Y) с особенностью пляжа и расстоянием от точечного местоположения до реки, порта, туристического объекта и города (как переменная X). Моя цель с помощью GAM - предсказать значение Y с помощью этой модели.

Проблемы заключаются в том, что я использовал гладкий член переменной расстояния x для построения модели и прогнозирования значений Y. Значение результата очень велико и находится вне диапазона значений Y наблюдения. Мой диапазон значений Y наблюдения составляет всего 0,05 - 12 единиц / м2, но прогнозируемое значение Y показывает очень высокие значения (сто тысяч, даже миллион). Но когда я попытался удалить сглаженный член в переменной X (т. Е. Использовать только параметр параметри c), предсказанные значения Y находились в диапазоне значений наблюдения Y, и не было очень высокого или очень малого значения Y, как при сглаживании термин используется. Значение AI C для модели со сглаженным термином ниже, чем у модели без сглаженного термина.

Итак, мои вопросы таковы, является ли причина этой вещи гладким термином? если это так, как это может произойти? и есть ли у вас какие-либо рекомендации для этого?

А также, когда я не выражаю / не задаю базисную функцию для кода пакета mgcv R, какая базисная функция будет использоваться по умолчанию в Rstudio?

Примечание. Единицей Y является элемент / м2, единицей X являются (фиктивная переменная для элемента пляжа и метр для расстояния между точкой до реки и города (в ней содержится тысяча значений), я строю модель с использованием Rstudio и это код моей модели:

fm5 <- gam(log10(Concentration+0.05) ~ Beach_gradient+Shore_exposure+Backshore_type+Substrate_type+Port+NearestRiver_Banyuwangi+NearestRiver_Bali+s(RiverDistance_BN,k=9)+s(RiverDistance_BL,k=9)+Nearest_tourism+NearestTourism_Distance+s(NearestCity_Distance,k=9)+Nearest_City,data=debris.data)

result <- predict(fm5,newdata=newdebris.data) FixResult <- 10^(result1-0.05)
...