简体   繁体   中英

How are the regression models, confidence intervals and data plotted?

I have the following model. The data file is in: https://drive.google.com/open?id=1_H6YZbdesK7pk5H23mZtp5KhVRKz0Ozl

library(nlme)
library(lme4)
library(car)
library(carData)
library(emmeans)
library(ggplot2)
library(Matrix)
library(multcompView)
datos_weight <- read.csv2("D:/investigacion/publicaciones/articulos-escribiendo/pennisetum/pennisetum-agronomicas/data_weight.csv",header=T, sep = ";", dec = ",")

parte_fija_3 <- formula(weight_DM 
                    ~ Genotypes 
                    + Age 
                    + I(Age^2) 
                    + Genotypes*Age 
                    + Genotypes*I(Age^2))
heterocedasticidad_5 <- varComb(varExp(form = ~fitted(.)))
correlacion_4 <- corCompSymm(form = ~ 1|Block/Genotypes)

modelo_43 <- gls(parte_fija_3, 
             weights = heterocedasticidad_5, 
             correlation = correlacion_4, 
             na.action = na.omit, 
             data = datos_weight)
anova(modelo_43)

#response
Denom. DF: 48 
                   numDF  F-value p-value
(Intercept)            1 597.3828  <.0001
Genotypes              3   2.9416  0.0424
Age                    1 471.6933  <.0001
I(Age^2)               1  22.7748  <.0001
Genotypes:Age          3   5.9425  0.0016
Genotypes:I(Age^2)     3   0.7544  0.5253

Now I want to graph the regression models with confidence intervals and data, separated for each genotype. I have used ggplot2 and I have plot the data, I have not been able to add the regression models with confidence intervals.

library(ggplot2)
rango_X <- c(30,90) #x axis
rango_Y <- c(0,175) #y axis
ggplot(datos_weight, aes(x = Age, y = weight_DM)) +
  geom_point() + 
  xlab("Age") + 
  ylab("Dry matter") +
  xlim(rango_X) +
  ylim(rango_Y) +
  facet_wrap(~ Genotypes, ncol = 2)

The graph is as follows:

在此处输入图片说明

For the next analysis of the same data, where there is no interaction with the quadratic age: Genotypes*I(Age^2) , how would you add the regression models with confidence intervals to the graph?

parte_fija_3 <- formula(weight_DM 
                        ~ Genotypes 
                        + Age
                        + I(Age^2)
                        + Genotypes*Age) 
                        #+ Genotypes*I(Age^2))
> anova(modelo_44)
Denom. DF: 51 
              numDF  F-value p-value
(Intercept)       1 609.3684  <.0001
Genotypes         3   3.7264  0.0169
Age               1 479.0973  <.0001
I(Age^2)          1  21.9232  <.0001
Genotypes:Age     3   6.4184  0.0009

The linear slopes from modelo_44 are:

(tendencias_em_lin <- emtrends(modelo_44,
                                "Genotypes",
                                var = "Age"))
Genotypes Age.trend        SE df lower.CL upper.CL
C          1.613619 0.1723451 51 1.267622 1.959616
E          1.665132 0.2024104 51 1.258776 2.071488
K          1.888587 0.2001627 51 1.486744 2.290430
M          1.059897 0.1205392 51 0.817905 1.301890

The quadratic slopes are?

(tendencias_em_quad <- emtrends(modelo_44,
                                "Genotypes",
                                var = "I(Age^2)"))
 Genotypes I(Age^2).trend           SE df    lower.CL   upper.CL
 C            0.013379926 0.0014290639 51 0.010510961 0.01624889
 E            0.013807066 0.0016783618 51 0.010437614 0.01717652
 K            0.015659927 0.0016597235 51 0.012327893 0.01899196
 M            0.008788536 0.0009994958 51 0.006781965 0.01079511

Confidence level used: 0.95 

Or the stimate from summary: I(Age^2) = -0.01511 ? I believe that the slope is constant for all genotypes because the Genotypes*I(Age^2) interaction has not been tested in modelo_44 :

summary(modelo_44)
Generalized least squares fit by REML
Model: parte_fija_3 
....
Coefficients:
                   Value Std.Error   t-value p-value
(Intercept)    -73.32555 11.236777 -6.525496  0.0000
GenotypesE       7.22267  9.581979  0.753776  0.4544
GenotypesK      -9.83285  9.165962 -1.072757  0.2884
GenotypesM      17.87000  8.085229  2.210203  0.0316
Age              3.43593  0.450041  7.634687  0.0000
I(Age^2)        -0.01511  0.004065 -3.717475  0.0005
GenotypesE:Age   0.05151  0.246724  0.208788  0.8354
GenotypesK:Age   0.27497  0.241923  1.136595  0.2610
GenotypesM:Age  -0.55372  0.195398 -2.833808  0.0066
...

Questions

  1. How do I add the regression models with confidence intervals and data for each genotype in separate graphs such as those presented, with ggplot2 or another option, if I had to plot for the models: modelo_43 and modelo_44 ?
  2. Did I correctly calculate the estimate of the quadratic slope with emtrends for modelo_44 , how is it correct?

Thank you very much for the reply

This question looks vaguely familiar -- have you posted it before? Maybe I'm thinking of some similar question from somebody else.

It seems that you are trying to plot apples, oranges, and bananas all on the same scale. I'm not sure what units the response variable (dry matter is in); let's say its in kg. Then the results in tendencies_em_lin are in kg per year, and those in tendencies_em_quad are in kg per year^2. These are three different scales, and it makes no sense to "show the data" on plots of those.

What I think it does make sense to do is something like this:

emm <- emmeans(modelo_44, ~ Genotype*Age,
    at = list(Age = seq(from = 40, to = 80, by = 5)))

This will obtain predictions for the given ages with each genotype. Now you can plot them as follows:

plotobj <- emmip(emm, Genotype ~ Age, CIs = TRUE)
plotobj

The returned plotobj is a ggplot object that you can add the data to, using techniques as shown in an example at the end of the graphics section in https://cran.r-project.org/web/packages/emmeans/vignettes/basics.html#plots .

Or, you can use dat = as.data.frame(emm) as a data frame containing the results you need, and plot them however you like. Again, you may use ggplot2 techniques to add the observed data to these plots.

Either way, the linear trends will be visible as increases or decreases in the plotted EMMs, and the quadratic trends will be visible as curvature in these paths.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM