2013-04-02 4 views
0

я запустить GAM в R с использованием пакета mgcv с помощью следующей формы:Изменения оси Y графиков plot.gam по умолчанию

shark.gamFINAL <- gam(ln.raw.CPUE...0.1 ~ Year + Month + 
         s(Mean.Temp, bs = "cr") + s(Mean.Chl.a, bs = "cr") + 
         s(Mean.Front.density, bs = "cr"), data=r, family=gaussian) 

После запуска этой модели и вычисления процентных девиаций объясняются каждой переменной I хотел бы построить влияние каждой переменной против ответа

Однако, когда я использую функцию plot.gam в R мои графики выходят с ау оси, что является "s(predictor variable, edf)"

Я не уверен, что это масштаб ось y представляет?

Есть ли способ, которым я мог бы изменить диапазон оси y на то, что представляет собой отклик, как это было сделано в этой статье: Уолш и Клейбер (2001), «Обобщенная модель аддитивной модели и регрессионный анализ синей акулы (Prionace glauca) на основе промыслового ярусного промысла на Гавайских островах.

Я бы разместил несколько примеров сюжетов, которые я описываю, но поскольку это мой первый пост, у меня нет не менее 10 репутаций, поэтому он не позволит мне это сделать!

Я искал много сайтов и форумов, чтобы попытаться найти ответ для этого, но безрезультатно, любая помощь была бы чрезвычайно оценена!

ответ

2

Ось - это значение, полученное по центру. Это вклад (при значении ковариации), сделанный для установленного значения для этой гладкой функции.

Легко изменить метку оси y - поставьте тот, который вы хотите аргументировать ylab. Это, конечно, означает, что вы должны составлять каждую гладкость отдельно, если вам нужна отдельная метка оси Y для каждого графика. В этом случае также использовать select аргумент для построения конкретных гладких функций, например:

layout(matrix(1:4, ncol = 2, byrow = TRUE) 
plot(shark.gamFINAL, select = 1, ylab = "foo") 
plot(shark.gamFINAL, select = 2, ylab = "bar") 
plot(shark.gamFINAL, select = 3, ylab = "foobar") 
layout(1) 

Единственный способ я знаю, чтобы изменить масштаб оси у, чтобы построить график вручную. Эти графики не имеют вклада от постоянного константы модели, а также других параметрических терминов. Если ваша модель имела только перехват и одну гладкость, вы могли бы генерировать новые данные по диапазону этого ковариата, а затем predict из модели для этих новых значений данных, но используйте type = "terms", чтобы получить вклад для гладкой. Затем вы построите значение, возвращенное с predict, плюс значение атрибута "constant", возвращенного predict.

В вашем случае вам нужно управлять другими переменными при прогнозировании. Один из способов сделать это - установить все другие ковариаты на их средства или типичное значение, но допустить, чтобы ковариат интереса менялся по своему диапазону, как и раньше. Затем вы суммируете значения в каждой строке матрицы, возвращаемой predict(shark.gamFINAL, newdata = NEW, type = "terms") (где NEW - это новый кадр данных для прогнозирования при изменении одного ковариата, но остальное остальное при некотором типичном значении), снова добавляя константу. Вы должны переделать это для каждого ковариата по очереди (т. Е. Один раз за сюжет), так как вам нужно сохранить другие ковариаты, удерживаемые при типичном значении.

Все это означает сдвиг шкалы на оси, хотя ни одна из сглаженных точек в вашей модели не взаимодействует с другими гладкими или слагаемыми в модели, поэтому, возможно, было бы легче думать о оси y, поскольку влияние на ответ для каждого гладко?

+0

Большое спасибо за совет! Я на самом деле только что нашел код в другом месте, который предлагает подход, в котором вы устанавливаете другие ковариаты по их средствам.Примерный код, который они предоставили для этого: testdata = data.frame (Income = seq (.4,1, length = 100), Edu = mean (mod_gam2 $ model $ Edu), Health = mean (mod_gam2 $ model $ Здоровье)) fits = predict (mod_gam2, newdata = testdata, type = 'response', se = T) preds = data.frame (testdata, fits) ggplot (aes (x = Income, y = fit), data = предсказывает) + geom_smooth (aes (ymin = fit - se.fit, ymax = fit + se.fit), fill = 'gray80', size = 1, stat = 'identity') – user2236109

+0

Этот код был на p17 этот веб-адрес: http://www3.nd.edu/~mclark19/learn/GAMS.pdf Это создало сюжет, аналогичный графику на рис. 8 на стр. 17 этой ссылки, но теперь я задаюсь вопросом, отражает ли это влияние переменной-предиктора на ответ или эффект предикторной переменной после ее сглаживания? Предположительно, форма линии тренда определяется лёссой гладкой, как default, тогда как я использовал кубическую сглаживание сплайнов в моей модели, поэтому мне придется это изменить? Заранее спасибо – user2236109

+0

Вы усложняете ситуацию, не понимая также, что делает код построения. В ** ggplot ** геометрия связана со статистикой. Стат по умолчанию в 'geom_smooth' является' stat_smooth'. Обратите внимание, что в их коде они меняют stat в вызове 'geom_smooth' из его по умолчанию' stat = "smooth" 'to' stat = "identity" '. Стат идентичности является особым, поскольку он просто отображает от x до x без преобразования или сводки. Автор использует это как быстрый простой способ иметь показатель ggplot частичного эффекта дохода с доверительным интервалом. –

Смежные вопросы