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:

  1. 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.

  1. Model summary summary(fm1)

Displays regression coefficients, standard errors, 𝑡 t-values, 𝑅 2 R 2 , etc.

This lets you see how well carb predicts optden.

  1. 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.

  1. 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==