1 - Database
data=read.csv("C:/Users/Samsung/OneDrive/Documentos/1 - PósDoc/2 - FAPESP - Silvipastoril/Responsabilidades/Teste do Transducer novo/data.csv")
data
#factors
data$Rubber_cap=as.factor(data$Rubber_cap)
data$Transducer=as.factor(data$Transducer)
str(data)
'data.frame': 140 obs. of 7 variables:
$ ID : chr "PadraoLANA" "PadraoLANA" "PadraoLANA" "PadraoLANA" ...
$ Bottle : int 1 2 3 4 5 6 7 8 9 10 ...
$ Rubber_cap : Factor w/ 2 levels "NR","OR": 1 1 1 1 1 2 2 2 2 2 ...
$ Time : num 2 2 2 2 2 2 2 2 2 2 ...
$ Transducer : Factor w/ 2 levels "New","Old": 2 2 2 2 2 2 2 2 2 2 ...
$ psi : num NA NA NA NA NA NA NA NA NA NA ...
$ Actual_volume_mL: num NA NA NA NA NA NA NA NA NA NA ...
2 - Old vs New transducer and rubber caps -
PSI
data1 = subset(data, !Time == 2)
data1
#model
mod = lmer(psi~Transducer*Rubber_cap + (1|Time), data = data1)
#P value e Médias
Pvalue = anova(mod)
Pvalue
Type III Analysis of Variance Table with Satterthwaite's method
Sum Sq Mean Sq NumDF DenDF F value Pr(>F)
Transducer 0.56709 0.56709 1 108 18.0396 4.6e-05 ***
Rubber_cap 0.00580 0.00580 1 108 0.1846 0.6683
Transducer:Rubber_cap 0.01695 0.01695 1 108 0.5391 0.4644
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
medias1 = emmeans(mod, ~ Transducer)
NOTE: Results may be misleading due to involvement in interactions
medias1
Transducer emmean SE df lower.CL upper.CL
New 0.938 0.324 5.03 0.106 1.77
Old 1.077 0.324 5.02 0.245 1.91
Results are averaged over the levels of: Rubber_cap
Degrees-of-freedom method: kenward-roger
Confidence level used: 0.95
medias2 = emmeans(mod, ~ Rubber_cap)
NOTE: Results may be misleading due to involvement in interactions
medias2
Rubber_cap emmean SE df lower.CL upper.CL
NR 1.00 0.324 5.03 0.168 1.83
OR 1.01 0.324 5.02 0.182 1.85
Results are averaged over the levels of: Transducer
Degrees-of-freedom method: kenward-roger
Confidence level used: 0.95
#Old vs New transducer - PSI
library(ggplot2)
plot1=ggplot(data1, aes(x=Time, y=psi, shape=Transducer))+
geom_line(stat="summary",fun="mean")+
geom_point(aes(shape = Transducer), size = 3, stat="summary",fun="mean")+
scale_shape_manual(values = c(1, 15), name= "Transducer",labels = c("New", "Old"))+
scale_y_continuous(name="Pressure (psi)", breaks = seq(0,3,0.1))+
scale_x_continuous(name="Fermentation time (h)", breaks=seq(0,24,2))
plot1

plot1.1=plot1+theme(axis.line = element_line(colour = "black", size = 0.7, linetype = "solid"),
panel.background = element_rect(fill = "transparent"),
legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),legend.position = c(0.1, 0.75),legend.key.size = unit(0.42, 'cm'))+
annotate(geom="text", y=2.6, x=4,label="P value = <0.001",size=4,color="black")
plot1.1
ggsave("Transducer.png", plot = plot1.1, width = 16, height = 11, units = "cm", dpi = 300)

#Old vs New rubber caps - PSI
plot2=ggplot(data1, aes(x=Time, y=psi, shape=Rubber_cap))+
geom_line(stat="summary",fun="mean")+
geom_point(aes(shape = Rubber_cap), size = 3, stat="summary",fun="mean")+
scale_shape_manual(values = c(1, 15), name= "Rubber cap",labels = c("New", "Old"))+
scale_y_continuous(name="Pressure (psi)", breaks = seq(0,3,0.1))+
scale_x_continuous(name="Fermentation time (h)", breaks=seq(0,24,2))
plot2

plot2.1=plot2+theme(axis.line = element_line(colour = "black", size = 0.7, linetype = "solid"),
panel.background = element_rect(fill = "transparent"),
legend.background = element_rect(fill = "transparent", size=0.5, linetype="solid",colour ="black"),legend.position = c(0.1, 0.75),legend.key.size = unit(0.42, 'cm'))+
annotate(geom="text", y=2.6, x=4,label="P value = 0.668",size=4,color="black")
plot2.1
ggsave("Rubber caps.png", plot = plot2.1, width = 16, height = 11, units = "cm", dpi = 300)

3 - Calibration curve for the new transducer
data2 = subset(data, !Transducer == "Old")
data2
mod1 = lm(Actual_volume_mL ~ psi, data = data2)
summary(mod1)
Call:
lm(formula = Actual_volume_mL ~ psi, data = data2)
Residuals:
Min 1Q Median 3Q Max
-6.4377 -0.3393 0.0277 0.4118 3.6288
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.6399 0.2838 2.255 0.0275 *
psi 5.3324 0.1937 27.534 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.401 on 65 degrees of freedom
(3 observations deleted due to missingness)
Multiple R-squared: 0.921, Adjusted R-squared: 0.9198
F-statistic: 758.1 on 1 and 65 DF, p-value: < 2.2e-16
colSums(!is.na(data2[, c("psi", "Actual_volume_mL")]))
psi Actual_volume_mL
67 67
plot3 = ggplot(data2, aes(x = psi, y = Actual_volume_mL))+
geom_point(shape=19, color='darkblue', size=1.3)+
geom_smooth(method = "lm", se = TRUE, color='black')+
scale_x_continuous(name ="Pressure (psi)", breaks=seq(0,4,0.5))+
scale_y_continuous(name = "Actual volume (mL)",breaks=seq(0,20,2))
plot3

plot3.1=plot3+
theme(panel.background = element_rect(fill = "transparent", color = "black",size = 0.3),
axis.line = element_line(size = 0.3, linetype = "solid",color = "black"),
axis.ticks = element_line(size = 0.3,color = "black"),
axis.title.y = element_text(size = 12,color = "black"),
axis.title.x = element_text(size = 12,color = "black"),
axis.text.x = element_text(size = 10,color = "black"),
axis.text.y = element_text(size = 10,color = "black"))+
annotate(geom="text", y=17, x=.7,label=expression(paste(Transducer, " = Newlab 2025")),size=5,color="red4")+
annotate(geom="text", y=15, x=.7,label=expression(paste(P-value, " = 0.0275")),size=5,color="black")+
annotate(geom="text", y=13, x=.7,label=expression(paste(y, " = 5.33x + 0.6399")),size=5,color="black")+
annotate(geom="text", y=11, x=.7,label=expression(paste(R^2, " = 0.92")),size=5,color="black")+
annotate(geom="text", y=9, x=.7,label=expression(paste(n, " = 67")),size=5,color="black")
plot3.1
ggsave("curve.png", plot = plot3.1, width = 16, height = 11, units = "cm", dpi = 300)

LS0tDQp0aXRsZTogIlRlc3RzIGluIHRoZSBuZXcgdHJhbnNkdWNlciBhbmQgcnViYmVyIGNhcHMiDQphdXRob3I6ICJWYWduZXIgT3ZhbmkiDQpkYXRlOiAiMjYvMTEvMjAyNSINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6IDINCiAgICB0aGVtZTogdW5pdGVkDQogIHBkZl9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZGVwdGg6ICcyJw0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19kZXB0aDogJzInDQogICAgZGZfcHJpbnQ6IHBhZ2VkDQotLS0NCg0KKioqDQojICoqMSAtIERhdGFiYXNlKioNCioqKg0KDQpgYGB7cn0NCmRhdGE9cmVhZC5jc3YoIkM6L1VzZXJzL1NhbXN1bmcvT25lRHJpdmUvRG9jdW1lbnRvcy8xIC0gUMOzc0RvYy8yIC0gRkFQRVNQIC0gU2lsdmlwYXN0b3JpbC9SZXNwb25zYWJpbGlkYWRlcy9UZXN0ZSBkbyBUcmFuc2R1Y2VyIG5vdm8vZGF0YS5jc3YiKQ0KZGF0YQ0KDQojZmFjdG9ycw0KZGF0YSRSdWJiZXJfY2FwPWFzLmZhY3RvcihkYXRhJFJ1YmJlcl9jYXApDQpkYXRhJFRyYW5zZHVjZXI9YXMuZmFjdG9yKGRhdGEkVHJhbnNkdWNlcikNCnN0cihkYXRhKQ0KYGBgDQoNCioqKg0KIyAqKjIgLSBPbGQgdnMgTmV3IHRyYW5zZHVjZXIgYW5kIHJ1YmJlciBjYXBzIC0gUFNJKioNCioqKg0KDQpgYGB7cn0NCmRhdGExID0gc3Vic2V0KGRhdGEsICFUaW1lID09IDIpDQpkYXRhMQ0KDQojbW9kZWwNCm1vZCA9IGxtZXIocHNpflRyYW5zZHVjZXIqUnViYmVyX2NhcCArICgxfFRpbWUpLCBkYXRhID0gZGF0YTEpDQojUCB2YWx1ZSBlIE3DqWRpYXMNClB2YWx1ZSA9IGFub3ZhKG1vZCkNClB2YWx1ZQ0KbWVkaWFzMSA9IGVtbWVhbnMobW9kLCB+IFRyYW5zZHVjZXIpDQptZWRpYXMxDQptZWRpYXMyID0gZW1tZWFucyhtb2QsIH4gUnViYmVyX2NhcCkNCm1lZGlhczINCg0KI09sZCB2cyBOZXcgdHJhbnNkdWNlciAtIFBTSQ0KDQpsaWJyYXJ5KGdncGxvdDIpDQpwbG90MT1nZ3Bsb3QoZGF0YTEsIGFlcyh4PVRpbWUsIHk9cHNpLCBzaGFwZT1UcmFuc2R1Y2VyKSkrDQogIGdlb21fbGluZShzdGF0PSJzdW1tYXJ5IixmdW49Im1lYW4iKSsNCiAgZ2VvbV9wb2ludChhZXMoc2hhcGUgPSBUcmFuc2R1Y2VyKSwgc2l6ZSA9IDMsIHN0YXQ9InN1bW1hcnkiLGZ1bj0ibWVhbiIpKw0KICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxLCAxNSksIG5hbWU9ICJUcmFuc2R1Y2VyIixsYWJlbHMgPSBjKCJOZXciLCAiT2xkIikpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZT0iUHJlc3N1cmUgKHBzaSkiLCBicmVha3MgPSBzZXEoMCwzLDAuMSkpKw0KICBzY2FsZV94X2NvbnRpbnVvdXMobmFtZT0iRmVybWVudGF0aW9uIHRpbWUgKGgpIiwgYnJlYWtzPXNlcSgwLDI0LDIpKQ0KcGxvdDENCg0KcGxvdDEuMT1wbG90MSt0aGVtZShheGlzLmxpbmUgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDAuNywgbGluZXR5cGUgPSAic29saWQiKSwNCiBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiKSwNCiBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50Iiwgc2l6ZT0wLjUsIGxpbmV0eXBlPSJzb2xpZCIsY29sb3VyID0iYmxhY2siKSxsZWdlbmQucG9zaXRpb24gPSBjKDAuMSwgMC43NSksbGVnZW5kLmtleS5zaXplID0gdW5pdCgwLjQyLCAnY20nKSkrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTIuNiwgeD00LGxhYmVsPSJQIHZhbHVlID0gPDAuMDAxIixzaXplPTQsY29sb3I9ImJsYWNrIikNCnBsb3QxLjENCmdnc2F2ZSgiVHJhbnNkdWNlci5wbmciLCBwbG90ID0gcGxvdDEuMSwgd2lkdGggPSAxNiwgaGVpZ2h0ID0gMTEsIHVuaXRzID0gImNtIiwgZHBpID0gMzAwKQ0KDQojT2xkIHZzIE5ldyBydWJiZXIgY2FwcyAtIFBTSQ0KDQpwbG90Mj1nZ3Bsb3QoZGF0YTEsIGFlcyh4PVRpbWUsIHk9cHNpLCBzaGFwZT1SdWJiZXJfY2FwKSkrDQogIGdlb21fbGluZShzdGF0PSJzdW1tYXJ5IixmdW49Im1lYW4iKSsNCiAgZ2VvbV9wb2ludChhZXMoc2hhcGUgPSBSdWJiZXJfY2FwKSwgc2l6ZSA9IDMsIHN0YXQ9InN1bW1hcnkiLGZ1bj0ibWVhbiIpKw0KICBzY2FsZV9zaGFwZV9tYW51YWwodmFsdWVzID0gYygxLCAxNSksIG5hbWU9ICJSdWJiZXIgY2FwIixsYWJlbHMgPSBjKCJOZXciLCAiT2xkIikpKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZT0iUHJlc3N1cmUgKHBzaSkiLCBicmVha3MgPSBzZXEoMCwzLDAuMSkpKw0KICBzY2FsZV94X2NvbnRpbnVvdXMobmFtZT0iRmVybWVudGF0aW9uIHRpbWUgKGgpIiwgYnJlYWtzPXNlcSgwLDI0LDIpKQ0KcGxvdDINCg0KcGxvdDIuMT1wbG90Mit0aGVtZShheGlzLmxpbmUgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImJsYWNrIiwgc2l6ZSA9IDAuNywgbGluZXR5cGUgPSAic29saWQiKSwNCiBwYW5lbC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAidHJhbnNwYXJlbnQiKSwNCiBsZWdlbmQuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50Iiwgc2l6ZT0wLjUsIGxpbmV0eXBlPSJzb2xpZCIsY29sb3VyID0iYmxhY2siKSxsZWdlbmQucG9zaXRpb24gPSBjKDAuMSwgMC43NSksbGVnZW5kLmtleS5zaXplID0gdW5pdCgwLjQyLCAnY20nKSkrDQogIGFubm90YXRlKGdlb209InRleHQiLCB5PTIuNiwgeD00LGxhYmVsPSJQIHZhbHVlID0gMC42NjgiLHNpemU9NCxjb2xvcj0iYmxhY2siKQ0KcGxvdDIuMQ0KZ2dzYXZlKCJSdWJiZXIgY2Fwcy5wbmciLCBwbG90ID0gcGxvdDIuMSwgd2lkdGggPSAxNiwgaGVpZ2h0ID0gMTEsIHVuaXRzID0gImNtIiwgZHBpID0gMzAwKQ0KYGBgDQoNCioqKg0KIyAqKjMgLSBDYWxpYnJhdGlvbiBjdXJ2ZSBmb3IgdGhlIG5ldyB0cmFuc2R1Y2VyKioNCioqKg0KDQpgYGB7cn0NCmRhdGEyID0gc3Vic2V0KGRhdGEsICFUcmFuc2R1Y2VyID09ICJPbGQiKSANCmRhdGEyDQoNCm1vZDEgPSBsbShBY3R1YWxfdm9sdW1lX21MIH4gcHNpLCBkYXRhID0gZGF0YTIpDQpzdW1tYXJ5KG1vZDEpDQpjb2xTdW1zKCFpcy5uYShkYXRhMlssIGMoInBzaSIsICJBY3R1YWxfdm9sdW1lX21MIildKSkNCg0KcGxvdDMgPSBnZ3Bsb3QoZGF0YTIsIGFlcyh4ID0gcHNpLCB5ID0gQWN0dWFsX3ZvbHVtZV9tTCkpKw0KICBnZW9tX3BvaW50KHNoYXBlPTE5LCBjb2xvcj0nZGFya2JsdWUnLCBzaXplPTEuMykrDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICJsbSIsIHNlID0gVFJVRSwgY29sb3I9J2JsYWNrJykrDQogIHNjYWxlX3hfY29udGludW91cyhuYW1lID0iUHJlc3N1cmUgKHBzaSkiLCBicmVha3M9c2VxKDAsNCwwLjUpKSsNCiAgc2NhbGVfeV9jb250aW51b3VzKG5hbWUgPSAiQWN0dWFsIHZvbHVtZSAobUwpIixicmVha3M9c2VxKDAsMjAsMikpDQpwbG90MyANCiAgDQpwbG90My4xPXBsb3QzKyANCiAgdGhlbWUocGFuZWwuYmFja2dyb3VuZCA9IGVsZW1lbnRfcmVjdChmaWxsID0gInRyYW5zcGFyZW50IiwgY29sb3IgPSAiYmxhY2siLHNpemUgPSAwLjMpLA0KICBheGlzLmxpbmUgPSBlbGVtZW50X2xpbmUoc2l6ZSA9IDAuMywgbGluZXR5cGUgPSAic29saWQiLGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGlja3MgPSBlbGVtZW50X2xpbmUoc2l6ZSA9IDAuMyxjb2xvciA9ICJibGFjayIpLA0KICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEyLGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTIsY29sb3IgPSAiYmxhY2siKSwNCiAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwLGNvbG9yID0gImJsYWNrIiksDQogIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCxjb2xvciA9ICJibGFjayIpKSsNCmFubm90YXRlKGdlb209InRleHQiLCB5PTE3LCB4PS43LGxhYmVsPWV4cHJlc3Npb24ocGFzdGUoVHJhbnNkdWNlciwgIiA9IE5ld2xhYiAyMDI1IikpLHNpemU9NSxjb2xvcj0icmVkNCIpKw0KYW5ub3RhdGUoZ2VvbT0idGV4dCIsIHk9MTUsIHg9LjcsbGFiZWw9ZXhwcmVzc2lvbihwYXN0ZShQLXZhbHVlLCAiID0gMC4wMjc1IikpLHNpemU9NSxjb2xvcj0iYmxhY2siKSsNCmFubm90YXRlKGdlb209InRleHQiLCB5PTEzLCB4PS43LGxhYmVsPWV4cHJlc3Npb24ocGFzdGUoeSwgIiA9IDUuMzN4ICsgMC42Mzk5IikpLHNpemU9NSxjb2xvcj0iYmxhY2siKSsNCmFubm90YXRlKGdlb209InRleHQiLCB5PTExLCB4PS43LGxhYmVsPWV4cHJlc3Npb24ocGFzdGUoUl4yLCAiID0gMC45MiIpKSxzaXplPTUsY29sb3I9ImJsYWNrIikrDQphbm5vdGF0ZShnZW9tPSJ0ZXh0IiwgeT05LCB4PS43LGxhYmVsPWV4cHJlc3Npb24ocGFzdGUobiwgIiA9IDY3IikpLHNpemU9NSxjb2xvcj0iYmxhY2siKQ0KcGxvdDMuMQ0KDQpnZ3NhdmUoImN1cnZlLnBuZyIsIHBsb3QgPSBwbG90My4xLCB3aWR0aCA9IDE2LCBoZWlnaHQgPSAxMSwgdW5pdHMgPSAiY20iLCBkcGkgPSAzMDApDQpgYGANCg0KDQo=