#r #ggplot2 #glm
Вопрос:
Я знаю, что связывание данных не идеально, но я не могу получить ответ, который я ищу, с помощью подмножества, так что вот он.
https://drive.google.com/file/d/1SIgeBT4k5TyhX8QPO1Xbl87BCev_cDPZ/view?usp=sharing
Я запускаю glm на 2 подмножествах данных, мне нужно либо иметь возможность запускать их на одном glm, а затем разделять результаты по зонам, либо фильтровать по зонам, запускать glm отдельно, а затем объединять их в одну панель ggplot. Вот что у меня есть на данный момент.
BD_plots <- read.csv("BD_plots.csv")
library(magrittr)
library(tidyverse)
library(ggpubr)
library(conover.test)
library(emmeans)
library(see)
library(performance)
#.#############################################################
#FULL SELECTION GLM Spotted Seatrout zone B
#subsetting data by species and zone
trout.dat.b <- BD_plots %>%
filter(Commonname == "Spotted Seatrout") %>%
filter(Zone == "B")
summary(trout.dat.b)
#Spotted Seatrout glm full model-----------------------------------------------------------------
trout.glm.b.full <- glm(CPUE ~ Levelname Year BycatchQuantity
StartDepth DO Temperature Salinity ph,
data = trout.dat.b, family = gaussian(link = "log"))
#base model
trout.glm.b.base <- glm(CPUE ~ Levelname, data= trout.dat.b, family = gaussian(link ="log"))
#step to simplify model and get appropriate order
trout.glm.b.final <- step(trout.glm.b.base, scope = list(upper = trout.glm.b.full, lower = ~Levelname),
direction = 'forward', trace = 1, k = log(nrow(trout.dat.b)))
#final model summary
summary(trout.glm.b.final)
#calculate the EMmeans , SE, and Confidence levels
trout.emm.b <- emmeans(trout.glm.b.final, "Levelname", data = trout.dat.b)
trout.emm.b <- summary(trout.emm.b)
#checking normality of model
check_model(trout.glm.b.final)
#adding fitted alues to original data
trout.fit <- fitted(trout.glm.b.final)
trout.dat.b <- cbind(trout.dat.b, trout.fit)
#plotting
trout.glm.b.plot <- ggplot(trout.dat.b, aes(x = factor(Levelname, levels = c("High", "Med.High", "Medium", "Low")), y = (trout.fit),
fill = factor(Levelname, levels = c("High", "Med.High", "Medium", "Low"))))
labs(title = expression(paste("Spotted Sea Trout",italic('(Cynoscion nebulosus)'))), x = "", y = "", legend = NULL)
stat_summary(fun = mean, geom = "bar")
stat_summary(fun.data = mean_se, geom = "errorbar", width = 0.1)
scale_fill_manual(values = c("midnightblue", "dodgerblue4", "steelblue3", "lightskyblue"))
mytheme
trout.glm.b.plot
#checking piarwise comparisons for signifigance
conover.test(trout.dat.b$trout.fit, trout.dat.b$Levelname)
#.##############################################################
#FULL SELECTION GLM Spotted Seatrout zone D
#subsetting data by species and zone
trout.dat.d <- BD_plots %>%
filter(Commonname == "Spotted Seatrout") %>%
filter(Zone == "D")
hist(log(trout.dat.d$CPUE))
summary(trout.dat.d)
#Spotted Seatrout glm full model-----------------------------------------------------------------
trout.glm.d.full <- glm(CPUE ~ Levelname Year BycatchQuantity
StartDepth DO Temperature ph Salinity,
data = trout.dat.d, family = gaussian(link = "log"))
#base model
trout.glm.d.base <- glm(CPUE ~ Levelname, data= trout.dat.d, family = gaussian(link ="log"))
#step to simplify model and get appropriate order
trout.glm.d.final <- step(trout.glm.d.base, scope = list(upper = trout.glm.d.full, lower = ~Levelname),
direction = 'forward', trace = 1, k = log(nrow(trout.dat.d)))
#final model summary
summary(trout.glm.d.final)
#calculate the EMmeans , SE, and Confidence levels
trout.emm.d <- emmeans(trout.glm.d.final, "Levelname", data = trout.dat.d)
trout.emm.d <- summary(trout.emm.d)
#checking normality of model
check_model(trout.glm.d.final)
#adding fitted alues to original data
trout.fit <- fitted(trout.glm.d.final)
trout.dat.d <- cbind(trout.dat.d, trout.fit)
#plotting
trout.glm.d.plot <- ggplot(trout.dat.d, aes(x = factor(Levelname, levels = c("High", "Med.High", "Medium", "Low")), y = (trout.fit),
fill = factor(Levelname, levels = c("High", "Med.High", "Medium", "Low"))))
labs(title = expression(paste("Spotted Sea Trout",italic('(Cynoscion nebulosus)'))), x = "", y = "", legend = NULL)
stat_summary(fun = mean, geom = "bar")
stat_summary(fun.data = mean_se, geom = "errorbar", width = 0.1)
scale_fill_manual(values = c("midnightblue", "dodgerblue4", "steelblue3", "lightskyblue"))
mytheme
trout.glm.d.plot
#checking pairwise comparisons for significance
conover.test(trout.dat.d$trout.fit, trout.dat.d$Levelname)
Идеальным выходом был бы такой график, где левая группа была бы одной зоной, а правая-другой, с надписями под ними.
Ответ №1:
Понял это.. Все, что мне нужно было сделать, это соединить два набора данных вместе и запустить график на этом.
Однако, если у кого-то другого есть лучший способ сделать это и очистить/уменьшить код, я был бы очень признателен!!