R Визуализация вложенных сечений для линейной регрессии с категориальными переменными и членами взаимодействия - PullRequest
0 голосов
/ 25 ноября 2018

Я использую R и функцию lm для подбора множественной линейной регрессии, в которой используются непрерывные и категориальные детерминированные переменные, а также взаимодействия между некоторыми из этих переменных.

Для визуализации полученной модели, которую я использовалпакет visreg (https://cran.r -project.org / web / packages / visreg / index.html ).Этот пакет допускает то, что в справочном руководстве описывается как графики «поперечного сечения», чтобы отдельно отображать ответы по категориальной переменной с помощью необязательного аргумента «по».Это также позволяет параметру наложения накладывать графики этих категориальных ответов на один график (см. https://cran.r -project.org / web / packages / visreg / visreg.pdf и https://web.as.uky.edu/statistics/users/pbreheny/publications/visreg.pdf).

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

Пакет visreg легко позволяет мне построить поперечное сечение влияния дефицита воды на gs по видам, сделать то же самое по возрасту, а также вариант наложения на том же графике (см. Ниже).).

График 1: gs реакция на дефицит воды по видам: Plot 1: gs response to water deficit by species

График 2: отклик gs на дефицит воды по возрасту листа: Plot 2: gs response to water deficit by leaf age

График 3: отклик gs на дефицит водывозраст листа, наложение на одном участке: Plot 3: gs response to water deficit by leaf age, overlay on single plot

Однако мне нужно сделать что-то более сложное.Мне нужно сделать подсечение поперечного сечения.Другими словами, я хотел бы изобразить влияние возраста листьев на дефицит воды, как на графике 3, но по каждому виду.Таким образом, для каждого вида будет отдельный график, показывающий взаимодействие дефицита воды и возраста листа, с эффектами возраста листа («o» и «m»), наложенными на каждый вид.

Возможно ли это сВисрег пакет?Если нет, то какие могут быть другие подходы в R для визуализации модели таким образом?

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

К сожалению, в настоящее время это не реализовано в visreg;Вы можете сделать что-то вроде этого в качестве обходного пути, но это не идеально:

library(visreg)
library(ggplot2)
library(gridExtra)
airquality$Rad <- cut(airquality$Solar.R, 3, labels=c('Low', 'Medium', 'High'))
fit <- lm(Ozone ~ Wind*Temp*Rad, airquality)
mf <- model.frame(fit)
v1 <- subset(visreg(fit, 'Wind', 'Temp', cond=list(Rad='Low'), plot=FALSE), mf$Rad == 'Low')
v2 <- subset(visreg(fit, 'Wind', 'Temp', cond=list(Rad='Medium'), plot=FALSE), mf$Rad == 'Medium')
v3 <- subset(visreg(fit, 'Wind', 'Temp', cond=list(Rad='High'), plot=FALSE), mf$Rad == 'High')
grid.arrange(plot(v1, gg=TRUE) + ggtitle("Solar Radiation: Low"),
             plot(v2, gg=TRUE) + ggtitle("Solar Radiation: Medium"),
             plot(v3, gg=TRUE) + ggtitle("Solar Radiation: High"))

Я согласен, что это было бы хорошим улучшением по сравнению с visreg, хотя -Я открыл для него вопрос здесь ;надеюсь добраться до него, когда закончится семестр.

0 голосов
/ 25 ноября 2018

Я мог бы что-то упустить, но почему бы просто не сделать это непосредственно в ggplot?

, чтобы изобразить влияние возраста листьев на дефицит воды, как на графике 3, но для каждого вида.Таким образом, для каждого вида будет отдельный график, показывающий взаимосвязь между дефицитом воды и возрастом листа, с эффектами возраста листа («o» и «m»), наложенными на каждый вид

ggplot(data, aes(x = CWD_mm,
                 y = ln_gs,
                 color = leaf_age)) +
    geom_point() +
    geom_smooth(method = "lm") +
    facet_wrap(~ species)
...