sample size
library(gtsummary)
library(dplyr)
#Determination of Formaldehyde
head(Formaldehyde)
require(stats); require(graphics)
plot(optden ~ carb, data = Formaldehyde,
xlab = "Carbohydrate (ml)", ylab = "Optical Density",
main = "Formaldehyde data", col = 4, las = 1)
abline(fm1 <- lm(optden ~ carb, data = Formaldehyde))

summary(fm1)
Call:
lm(formula = optden ~ carb, data = Formaldehyde)
Residuals:
1 2 3 4 5 6
-0.006714 0.001029 0.002771 0.007143 0.007514 -0.011743
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.005086 0.007834 0.649 0.552
carb 0.876286 0.013535 64.744 3.41e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.008649 on 4 degrees of freedom
Multiple R-squared: 0.999, Adjusted R-squared: 0.9988
F-statistic: 4192 on 1 and 4 DF, p-value: 3.409e-07
opar <- par(mfrow = c(2, 2), oma = c(0, 0, 1.1, 0))
plot(fm1)

require(stats); require(graphics)
plot(optden ~ carb, data = Formaldehyde,
xlab = "Carbohydrate (ml)", ylab = "Optical Density",
main = "Formaldehyde data", col = 4, las = 1)
abline(fm1 <- lm(optden ~ carb, data = Formaldehyde))
summary(fm1)
Call:
lm(formula = optden ~ carb, data = Formaldehyde)
Residuals:
1 2 3 4 5 6
-0.006714 0.001029 0.002771 0.007143 0.007514 -0.011743
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.005086 0.007834 0.649 0.552
carb 0.876286 0.013535 64.744 3.41e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.008649 on 4 degrees of freedom
Multiple R-squared: 0.999, Adjusted R-squared: 0.9988
F-statistic: 4192 on 1 and 4 DF, p-value: 3.409e-07
opar <- par(mfrow = c(2, 2), oma = c(0, 0, 1.1, 0))

plot(fm1)
par(opar)

Interpretation:
- Scatterplot with regression line require(stats); require(graphics)
plot(optden ~ carb, data = Formaldehyde, xlab = “Carbohydrate (ml)”,
ylab = “Optical Density”, main = “Formaldehyde data”, col = 4, las = 1)
abline(fm1 <- lm(optden ~ carb, data = Formaldehyde))
Loads stats and graphics (not strictly necessary since they’re base
packages).
Plots carbohydrate concentration (carb) vs optical density
(optden).
Fits a simple linear model fm1 (optden ~ carb).
Draws the regression line onto the scatterplot.
- Model summary summary(fm1)
Displays regression coefficients, standard errors, 𝑡 t-values, 𝑅 2 R
2 , etc.
This lets you see how well carb predicts optden.
- Diagnostic plots opar <- par(mfrow = c(2, 2), oma = c(0, 0, 1.1,
0)) plot(fm1)
Splits the plotting window into a 2×2 grid.
Produces the four standard diagnostic plots for linear models:
Residuals vs Fitted
Normal Q-Q
Scale-Location
Residuals vs Leverage
These help you check assumptions like linearity, normality, constant
variance, and influential points.
- Combined script require(stats); require(graphics) plot(optden ~
carb, data = Formaldehyde, xlab = “Carbohydrate (ml)”, ylab = “Optical
Density”, main = “Formaldehyde data”, col = 4, las = 1) abline(fm1 <-
lm(optden ~ carb, data = Formaldehyde)) summary(fm1) opar <-
par(mfrow = c(2, 2), oma = c(0, 0, 1.1, 0)) plot(fm1) par(opar)
This is just a condensed version of everything above:
Fits and visualizes the regression line.
Summarizes the model.
Produces diagnostic plots.
Restores plotting parameters (par(opar)).
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIHNhbXBsZSBzaXplDQpgYGB7cn0NCmxpYnJhcnkoZ3RzdW1tYXJ5KQ0KbGlicmFyeShkcGx5cikNCmBgYA0KDQojRGV0ZXJtaW5hdGlvbiBvZiBGb3JtYWxkZWh5ZGUNCmBgYHtyfQ0KaGVhZChGb3JtYWxkZWh5ZGUpDQpgYGANCg0KYGBge3J9DQpyZXF1aXJlKHN0YXRzKTsgcmVxdWlyZShncmFwaGljcykNCnBsb3Qob3B0ZGVuIH4gY2FyYiwgZGF0YSA9IEZvcm1hbGRlaHlkZSwNCiAgICAgeGxhYiA9ICJDYXJib2h5ZHJhdGUgKG1sKSIsIHlsYWIgPSAiT3B0aWNhbCBEZW5zaXR5IiwNCiAgICAgbWFpbiA9ICJGb3JtYWxkZWh5ZGUgZGF0YSIsIGNvbCA9IDQsIGxhcyA9IDEpDQphYmxpbmUoZm0xIDwtIGxtKG9wdGRlbiB+IGNhcmIsIGRhdGEgPSBGb3JtYWxkZWh5ZGUpKQ0KYGBgDQoNCmBgYHtyfQ0Kc3VtbWFyeShmbTEpDQpgYGANCg0KYGBge3J9DQpvcGFyIDwtIHBhcihtZnJvdyA9IGMoMiwgMiksIG9tYSA9IGMoMCwgMCwgMS4xLCAwKSkNCnBsb3QoZm0xKQ0KYGBgDQoNCmBgYHtyfQ0KcmVxdWlyZShzdGF0cyk7IHJlcXVpcmUoZ3JhcGhpY3MpDQpwbG90KG9wdGRlbiB+IGNhcmIsIGRhdGEgPSBGb3JtYWxkZWh5ZGUsDQogICAgIHhsYWIgPSAiQ2FyYm9oeWRyYXRlIChtbCkiLCB5bGFiID0gIk9wdGljYWwgRGVuc2l0eSIsDQogICAgIG1haW4gPSAiRm9ybWFsZGVoeWRlIGRhdGEiLCBjb2wgPSA0LCBsYXMgPSAxKQ0KYWJsaW5lKGZtMSA8LSBsbShvcHRkZW4gfiBjYXJiLCBkYXRhID0gRm9ybWFsZGVoeWRlKSkNCnN1bW1hcnkoZm0xKQ0Kb3BhciA8LSBwYXIobWZyb3cgPSBjKDIsIDIpLCBvbWEgPSBjKDAsIDAsIDEuMSwgMCkpDQpwbG90KGZtMSkNCnBhcihvcGFyKQ0KYGBgDQpJbnRlcnByZXRhdGlvbjoNCg0KMS4gU2NhdHRlcnBsb3Qgd2l0aCByZWdyZXNzaW9uIGxpbmUNCnJlcXVpcmUoc3RhdHMpOyByZXF1aXJlKGdyYXBoaWNzKQ0KcGxvdChvcHRkZW4gfiBjYXJiLCBkYXRhID0gRm9ybWFsZGVoeWRlLA0KICAgICB4bGFiID0gIkNhcmJvaHlkcmF0ZSAobWwpIiwgeWxhYiA9ICJPcHRpY2FsIERlbnNpdHkiLA0KICAgICBtYWluID0gIkZvcm1hbGRlaHlkZSBkYXRhIiwgY29sID0gNCwgbGFzID0gMSkNCmFibGluZShmbTEgPC0gbG0ob3B0ZGVuIH4gY2FyYiwgZGF0YSA9IEZvcm1hbGRlaHlkZSkpDQoNCg0KTG9hZHMgc3RhdHMgYW5kIGdyYXBoaWNzIChub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IHNpbmNlIHRoZXnigJlyZSBiYXNlIHBhY2thZ2VzKS4NCg0KUGxvdHMgY2FyYm9oeWRyYXRlIGNvbmNlbnRyYXRpb24gKGNhcmIpIHZzIG9wdGljYWwgZGVuc2l0eSAob3B0ZGVuKS4NCg0KRml0cyBhIHNpbXBsZSBsaW5lYXIgbW9kZWwgZm0xIChvcHRkZW4gfiBjYXJiKS4NCg0KRHJhd3MgdGhlIHJlZ3Jlc3Npb24gbGluZSBvbnRvIHRoZSBzY2F0dGVycGxvdC4NCg0KMi4gTW9kZWwgc3VtbWFyeQ0Kc3VtbWFyeShmbTEpDQoNCg0KRGlzcGxheXMgcmVncmVzc2lvbiBjb2VmZmljaWVudHMsIHN0YW5kYXJkIGVycm9ycywgDQrwnZGhDQp0LXZhbHVlcywgDQrwnZGFDQoyDQpSDQoyDQosIGV0Yy4NCg0KVGhpcyBsZXRzIHlvdSBzZWUgaG93IHdlbGwgY2FyYiBwcmVkaWN0cyBvcHRkZW4uDQoNCjMuIERpYWdub3N0aWMgcGxvdHMNCm9wYXIgPC0gcGFyKG1mcm93ID0gYygyLCAyKSwgb21hID0gYygwLCAwLCAxLjEsIDApKQ0KcGxvdChmbTEpDQoNCg0KU3BsaXRzIHRoZSBwbG90dGluZyB3aW5kb3cgaW50byBhIDLDlzIgZ3JpZC4NCg0KUHJvZHVjZXMgdGhlIGZvdXIgc3RhbmRhcmQgZGlhZ25vc3RpYyBwbG90cyBmb3IgbGluZWFyIG1vZGVsczoNCg0KUmVzaWR1YWxzIHZzIEZpdHRlZA0KDQpOb3JtYWwgUS1RDQoNClNjYWxlLUxvY2F0aW9uDQoNClJlc2lkdWFscyB2cyBMZXZlcmFnZQ0KDQpUaGVzZSBoZWxwIHlvdSBjaGVjayBhc3N1bXB0aW9ucyBsaWtlIGxpbmVhcml0eSwgbm9ybWFsaXR5LCBjb25zdGFudCB2YXJpYW5jZSwgYW5kIGluZmx1ZW50aWFsIHBvaW50cy4NCg0KNC4gQ29tYmluZWQgc2NyaXB0DQpyZXF1aXJlKHN0YXRzKTsgcmVxdWlyZShncmFwaGljcykNCnBsb3Qob3B0ZGVuIH4gY2FyYiwgZGF0YSA9IEZvcm1hbGRlaHlkZSwNCiAgICAgeGxhYiA9ICJDYXJib2h5ZHJhdGUgKG1sKSIsIHlsYWIgPSAiT3B0aWNhbCBEZW5zaXR5IiwNCiAgICAgbWFpbiA9ICJGb3JtYWxkZWh5ZGUgZGF0YSIsIGNvbCA9IDQsIGxhcyA9IDEpDQphYmxpbmUoZm0xIDwtIGxtKG9wdGRlbiB+IGNhcmIsIGRhdGEgPSBGb3JtYWxkZWh5ZGUpKQ0Kc3VtbWFyeShmbTEpDQpvcGFyIDwtIHBhcihtZnJvdyA9IGMoMiwgMiksIG9tYSA9IGMoMCwgMCwgMS4xLCAwKSkNCnBsb3QoZm0xKQ0KcGFyKG9wYXIpDQoNCg0KVGhpcyBpcyBqdXN0IGEgY29uZGVuc2VkIHZlcnNpb24gb2YgZXZlcnl0aGluZyBhYm92ZToNCg0KRml0cyBhbmQgdmlzdWFsaXplcyB0aGUgcmVncmVzc2lvbiBsaW5lLg0KDQpTdW1tYXJpemVzIHRoZSBtb2RlbC4NCg0KUHJvZHVjZXMgZGlhZ25vc3RpYyBwbG90cy4NCg0KUmVzdG9yZXMgcGxvdHRpbmcgcGFyYW1ldGVycyAocGFyKG9wYXIpKS4NCg0KDQoNCg0KDQoNCg==