Как интерпретировать вывод двух непрерывных переменных с использованием GAM?

Вопрос или проблема

Мне действительно нужна помощь с GAM. Я должен выяснить, является ли ассоциация линейной или нелинейной с помощью GAM. Переменная предиктор — это температура на лаге 0, а результат — сердечно-сосудистые госпитализации (переменная подсчета). Я много раз пытался, но не могу понять, как интерпретировать график и вывод, который я получаю.

Я попробовал следующую формулу, используя пакет mgcv:

model1<- gam(cvd ~ s(templg0), family=poisson)
summary(model1)
plot(model1)

Вот вывод для суммирования, который я получаю:

Family: poisson 
Link function: log 

Formula:
cvd ~ s(templg0)

Parametric coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept) 3.195669   0.004877   655.2   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Approximate significance of smooth terms:
             edf Ref.df Chi.sq  p-value    
s(templg0) 3.422  4.295  57.23 2.93e-11 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R-sq.(adj) =  0.0152   Deviance explained = 1.68%
UBRE =  1.016  Scale est. = 1         n = 1722

Может кто-нибудь, пожалуйста, объяснить вывод подробно. Что этот вывод объясняет? И также может кто-нибудь помочь, что показывает этот график (изображение прикреплено)? Пожалуйста, будьте добры, так как я потратил много времени, но всё равно не понимаю, как это интерпретировать.

enter image description here

Что вы делаете здесь, так это используете регрессию с гладкими сплайнами. Посмотрите книгу “Введение в статистическое обучение”, глава 7.5, для очень хорошего обзора метода.

Функция s-function в GAM позволяет вам указать, как GAM подгоняется. Вы не указали k, поэтому выбирается некоторое значение по умолчанию:

размерность базиса, используемого для представления гладкого члена. Значение по умолчанию зависит от количества переменных, которые выступают в качестве функции терма. k не должно быть меньше размерности нулевого пространства штрафа за терм (см. null.space.dimension), но будет перезаписано, если оно таким окажется. См. choose.k для дополнительной информации.

По сути, GAM выполняет несколько линейных регрессий (заданных k) вдоль x-axis, если так можно выразиться. Таким образом, GAM позволяет моделировать сильную нелинейность. Если вы хотите проверить линейность ваших данных, вам следует проверить различные значения k и посмотреть на график.

Пример GAM:

library(gam)
library(ISLR)
df = ISLR::Auto

# GAM с 10 узлами
gam5= gam(horsepower ~ s(mpg, 10), data=df)
summary(gam5)
plot(gam5, se=T)

enter image description here

Результат GAM:

Вы бы сделали вывод, что ваша модель линейна? Нет. В диапазоне примерно ]mpg=0 до mpg=20[ существует линейная зависимость, а также между ]mpg=20 до mpg=40[. Но линейность не сохраняется для всего диапазона данных. Поэтому я бы разделил эти сегменты, например, при помощи кодирования фиктивных переменных и взаимодействующих термов.

Обратите внимание, что ось y пересчитана в других единицах. Поэтому здесь нет естественной интерпретации оси y.

Сравнение с непараметрической (NP) оценкой:

Для решения проблемы нелинейности непараметрическая регрессия является очевидной альтернативой. Что произойдет, если мы применим NP?

# Непараметрическая регрессия
library(SemiPar)
fit <- spm(df$horsepower ~ f(df$mpg)) 
plot(fit)

enter image description here

Результат NP:

Как вы можете видеть, NP дает почти тот же результат. Однако ось y на графике имеет естественную интерпретацию, что может быть полезно.

Что касается вашей проблемы:

Сначала убедитесь, что вы проверяете различные значения для k в s(...,k), то есть проверяйте разное количество узлов и смотрите, как изменяется график. Также ознакомьтесь с книгой, чтобы понять суть.

На вашем текущем графике я вижу некоторые изломы примерно при x=10 и x=20. Однако я бы не сказал, что это серьезная нелинейность (но нелинейность в данных есть). В общем, если вы можете провести линию по всему диапазону графика (вдоль оси x), и эта линия не выходит за ваши границы уверенности, вы можете утверждать о линейной зависимости.

Z-значение (см. вывод glm) показывает, что переменная предиктор (температура на лаге 0) имеет статистически значимый положительный эффект на сердечно-сосудистые госпитализации. Значительное значение хи-квадрат также поддерживает идею о важном влиянии температуры. (Заметьте, что p-значение указывает на то, что наблюдаемая выборка случайна, то есть случайно распределена). График показывает часть GAM. Ни в коем случае он не оценивает, есть ли линейная или нелинейная связь.

.

Ответ или решение

Чтобы понять, как интерпретировать вывод двух непрерывных переменных с использованием обобщенных аддитивных моделей (GAM), мы начнем с теории, затем рассмотрим ваш пример и применим знания на практике.

Теория

Обобщенные аддитивные модели (GAM) позволяют гибко моделировать взаимосвязь между зависимой переменной и одной или несколькими независимыми переменными, включая не только линейные, но и нелинейные функции. Это достигается за счет использования сглаживающих функций, таких как сплайны. Главной целью использования GAM является обнаружение и интерпретация сложных паттернов в данных, которые невозможно выявить с помощью стандартных линейных регрессий.

Пример

Вы исследовали влияние температуры (с задержкой 0) на количество госпитализаций по кардиозаболеваниям, используя пакет mgcv в R. Ваш код выглядит следующим образом:

model1 <- gam(cvd ~ s(templg0), family = poisson)
summary(model1)
plot(model1)

Вывод summary(model1) показал значимость сглаженной функции s(templg0), с оценкой степеней свободы около 3.422 и очень малой p-уровнем значимости (p < 0.001). Это указывает на то, что температура имеет значимое влияние на количество госпитализаций, и, скорее всего, это влияние нелинейно.

Применение

  1. Параметрические коэффициенты: Здесь показан только интерцепт, который статически значим, что говорит о наличии основного уровня госпитализаций, когда воздействие температуры отсутствует.

  2. Сглаженные термины: Значение edf показателя наклона (эффективных степеней свободы) для s(templg0), большей единицы, указывает на относительно сложную (нелинейную) форму функции. Значение Chi.sq и малая p-уровень значимости указывают на то, что этот сглаженный терм значительно улучшает модель, объясняя часть вариации зависимой переменной.

  3. График: График, который вы получили из plot(model1), отображает предсказанные значения s(templg0) с доверительными интервалами. Если линия имеет заметные изгибы и не прямая, это указывает на нелинейность отношения между температурой и госпитализациями.

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

Оцените материал
Добавить комментарий

Капча загружается...