[英]How are the regression models, confidence intervals and data plotted?
我有以下模型。 數據文件位於: 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
現在,我想用每個基因型分開的置信區間和數據來繪制回歸模型。 我使用了ggplot2
並繪制了數據,但我無法添加具有置信區間的回歸模型。
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)
圖形如下:
對於同一數據的下一個分析,在與二次年齡沒有相互作用的地方: Genotypes*I(Age^2)
,您如何將具有置信區間的回歸模型添加到圖中?
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
來自modelo_44
的線性斜率是:
(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
二次斜率是?
(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
還是總結中的結果: I(Age^2) = -0.01511
? 我相信斜率對於所有基因型都是恆定的,因為尚未在modelo_44
測試Genotypes*I(Age^2)
相互作用:
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
...
問題
modelo_43
和modelo_44
進行繪圖,如何將帶有置信區間和每種基因型數據的回歸模型添加到單獨的圖中(如所示的圖中),使用ggplot2
或其他選項,如何添加這些模型的置信區間和數據? emtrends
為modelo_44
,它是如何糾正? 非常感謝你的回復
這個問題看起來模棱兩可-您以前曾張貼過嗎? 也許我在想別人的類似問題。
似乎您正在嘗試以相同比例繪制蘋果,橙子和香蕉。 我不確定響應變量(干物質在哪里)的單位; 假設以千克為單位。 然后, tendencies_em_lin
中的結果以千克/年為單位,而tendencies_em_quad
中的結果以千克/年^ 2為單位。 這是三種不同的比例,因此在這些圖上“顯示數據”是沒有意義的。
我認為這樣做確實有意義,例如:
emm <- emmeans(modelo_44, ~ Genotype*Age,
at = list(Age = seq(from = 40, to = 80, by = 5)))
這將獲得每種基因型對給定年齡的預測。 現在,您可以按以下方式繪制它們:
plotobj <- emmip(emm, Genotype ~ Age, CIs = TRUE)
plotobj
返回的plotobj
是一個ggplot對象,您可以使用https://cran.r-project.org/web/packages/emmeans/vignettes/中圖形部分結尾處的示例所示的技術將數據添加到該對象。 basics.html#plots 。
或者,您可以使用dat = as.data.frame(emm)
作為包含所需結果的數據框,並根據需要繪制它們。 同樣,您可以使用ggplot2技術將觀察到的數據添加到這些圖中。
無論哪種方式,在繪制的EMM中線性趨勢都將隨着增加或減少而可見,而在這些路徑中,二次趨勢將隨着曲率而可見。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.