Получив модель накопления биомассы во времени в трехстороннем взаимодействии, включающем факториальную переменную с 2 уровнями (традиционным и интенсивным) и непрерывную переменную (EC), я попытался представить результат на рисунке, используя диаграмму рассеянияэто будет отображать линии регрессии для четырех разных случаев: традиционное лечение и высокая электропроводность;традиционное лечение и низкая электропроводность;интенсивная обработка и высокая электропроводность;интенсивное лечение и низкая электропроводность.
Я пытался использовать ggplot, но он не обеспечивает достаточной гибкости в том, как я представляю свой результат. Я хочу использовать базовую букву R, чтобы точно представить диапазоны электропроводности, которые я хочу использовать, и более точно персонализировать цветовую палитру и условные обозначения.
Для этого я создал 4 набора данных для построения регрессии. линии из модели, примененной к набору данных
data
age logeage use EC AGB
1 9.5 2.251292 intens 0.0825 0.0000000
2 65.0 4.174387 trad 0.2625 237.6903265
3 11.0 2.397895 intens 0.0850 0.4857754
4 26.0 3.258097 trad 0.2350 263.9812024
5 29.0 3.367296 trad 0.4300 106.6392453
6 13.5 2.602690 intens 0.5100 0.0000000
7 29.0 3.367296 trad 0.4400 241.2897229
8 13.5 2.602690 intens 0.2800 0.0000000
9 12.5 2.525729 intens 0.2000 1.9553807
10 21.0 3.044522 intens 0.1300 5.4259407
11 1.0 0.000000 trad 0.2600 0.0000000
13 25.0 3.218876 trad 0.2900 98.0180916
14 30.0 3.401197 trad 0.7600 197.2887138
15 31.0 3.433987 trad 0.3900 254.8277552
16 66.0 4.189655 trad 0.2400 135.1967346
17 30.5 3.417727 trad 0.2100 217.6831019
18 12.0 2.484907 intens 0.0700 0.0000000
19 48.0 3.871201 trad 0.3400 105.1035670
20 15.0 2.708050 intens 0.2700 12.8276905
21 30.5 3.417727 trad 0.4400 167.0891661
22 32.0 3.465736 intens 0.5800 108.9973034
23 71.0 4.262680 trad 0.3700 135.9036366
24 35.5 3.569533 trad 0.1300 97.1231771
25 30.0 3.401197 trad 0.3100 107.0933743
27 35.0 3.555348 trad 0.1500 146.8864254
28 69.0 4.234107 trad 0.1900 267.8302222
29 12.0 2.484907 intens 0.0600 21.4084421
34 30.5 3.417727 trad 0.1300 72.9122228
35 19.5 2.970414 trad 0.1400 17.3043656
37 11.5 2.442347 trad 0.2800 91.5393234
38 28.5 3.349904 intens 0.2300 198.6790722
39 47.0 3.850148 trad 0.1100 222.4857276
40 46.0 3.828641 trad 0.1900 171.3323051
41 43.0 3.761200 trad 0.1100 184.9173687
42 9.0 2.197225 intens 0.2900 10.7360386
43 22.0 3.091042 trad 0.3700 149.7812194
49 28.5 3.349904 trad 0.2600 112.7302377
50 51.0 3.931826 intens 0.2200 21.9547804
55 19.0 2.944439 trad 0.1200 58.6177275
56 28.0 3.332205 intens 0.0700 31.1173969
57 47.0 3.850148 trad 0.1100 194.4897458
58 45.0 3.806662 trad 0.1100 90.0451401
59 7.5 2.014903 intens 0.0900 2.4621935
60 10.0 2.302585 intens 0.0400 12.2489902
61 36.0 3.583519 trad 0.0500 95.4059899
rbPal <- colorRampPalette(c('red','yellow'))
data$colour<- rbPal(10)[as.numeric(cut(data$EC, breaks = 10))]
data$use<- trim_levels(data$use)
par(mfrow = c(1,1), mar= c(2.5,2.5,1,0.5), yaxt= "s",xaxt= "s", las = 0, cex = 1)
plot(AGB~age, data = data, pch= c(1,8)[as.numeric(use)], cex= 1, col= colour,
xlab="Time", ylab="biomass", ylim = c(0,median(pristine$AGB)+10), mgp=c(1.5,0.4,0))
# prediction traditional treatment
mdl.r <- lm(AGB ~ logeage*use*EC, data = data)
data.low<- data.frame(logeage=seq(from= min(data$logeage[data$EC < mean(
data$EC)]),to=max(data$logeage[data$EC < mean(data$EC)]),length=50), EC = seq(
from= min(data$EC), to=mean(data$EC), length=50), use = "trad")
data.high<- data.frame(logeage=seq(from= min(data$logeage[data$EC > mean(
data$EC)]), to=max(data$logeage[data$EC > mean(data$EC)]), length=50), EC = seq(
from= mean(data$EC), to=max(data$EC), length=50), use = "trad")
pred.H<- predict(mdl.r, newdata=data.high, type="response", se = T)
pred.L<- predict(mdl.r, newdata=data.low, type="response", se = T)
lines(exp(data.high$logeage), pred.H$fit, lty=3, col="red", lwd = 5)
lines(exp(data.low$logeage), pred.L$fit, lty=3, col="orange", lwd = 3)
# prediction intensive treatment
mdl.r <- lm(AGB ~ logeage*use*EC, data = data)
data.low<- data.frame(logeage=seq(from= min(data$logeage[data$EC < mean(
data$EC)]),to=max(data$logeage[data$EC < mean(data$EC)]),length=50), EC = seq(
from= min(data$EC), to=mean(data$EC), length=50), use = "intens")
data.high<- data.frame(logeage=seq(from= min(data$logeage[data$EC > mean(
data$EC)]), to=max(data$logeage[data$EC > mean(data$EC)]), length=50), EC = seq(
from= mean(data$EC), to=max(data$EC), length=50), use = "intens")
pred.H<- predict(mdl.r, newdata=data.high, type="response", se = T)
pred.L<- predict(mdl.r, newdata=data.low, type="response", se = T)
lines(exp(data.high$logeage), pred.H$fit, lty=1, col="red", lwd = 5)
lines(exp(data.low$logeage), pred.L$fit, lty=1, col="orange", lwd = 3)
Из 4 прогнозов, 3, по-видимому, соответствуют ожидаемому результату: логарифмическое увеличение AGB во времени, однако прогноз для традиционного лечения + высокий ECпоказывает совершенно неожиданную тенденцию, показывая артефакт, который может возникнуть из-за ошибки в наборе данных, созданном для прогноза. Я ожидаю, что все кривые вырастут в геометрической прогрессии, как и три другие.