load datasets
# dataset 1
x1 <- c(10.0, 8.0, 13.0, 9.0, 11.0, 14.0, 6.0, 4.0, 12.0, 7.0, 5.0)
y1 <- c(8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68)
# dataset 2
x2 <- c(10.0, 8.0, 13.0, 9.0, 11.0, 14.0, 6.0, 4.0, 12.0, 7.0, 5.0)
y2 <- c(9.14, 8.14, 8.74, 8.77, 9.26, 8.10, 6.13, 3.10, 9.13, 7.26, 4.74)
# dataset 3
x3 <- c(10.0, 8.0, 13.0, 9.0, 11.0, 14.0, 6.0, 4.0, 12.0, 7.0, 5.0)
y3 <- c(7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 6.08, 5.39, 8.15, 6.42, 5.73)
# dataset 4
x4 <- c(8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 8.0, 19.0, 8.0, 8.0, 8.0)
y4 <- c(6.58, 5.76, 7.71, 8.84, 8.47, 7.04, 5.25, 12.50, 5.56, 7.91, 6.89)
# collactions
x = cbind(x1, x2, x3, x4)
y = cbind(y1, y2, y3, y4)
# print
cat('x:\n')
x:
print(x)
x1 x2 x3 x4
[1,] 10 10 10 8
[2,] 8 8 8 8
[3,] 13 13 13 8
[4,] 9 9 9 8
[5,] 11 11 11 8
[6,] 14 14 14 8
[7,] 6 6 6 8
[8,] 4 4 4 19
[9,] 12 12 12 8
[10,] 7 7 7 8
[11,] 5 5 5 8
cat('y:\n')
y:
print(y)
y1 y2 y3 y4
[1,] 8.04 9.14 7.46 6.58
[2,] 6.95 8.14 6.77 5.76
[3,] 7.58 8.74 12.74 7.71
[4,] 8.81 8.77 7.11 8.84
[5,] 8.33 9.26 7.81 8.47
[6,] 9.96 8.10 8.84 7.04
[7,] 7.24 6.13 6.08 5.25
[8,] 4.26 3.10 5.39 12.50
[9,] 10.84 9.13 8.15 5.56
[10,] 4.82 7.26 6.42 7.91
[11,] 5.68 4.74 5.73 6.89
means, variances, and correlation coefficients
# means
cat('means:\n')
means:
colMeans(x)
x1 x2 x3 x4
9 9 9 9
colMeans(y)
y1 y2 y3 y4
7.500909 7.500909 7.500000 7.500909
# variances
cat('variances:\n')
variances:
apply(x, 2, var)
x1 x2 x3 x4
11 11 11 11
apply(y, 2, var)
y1 y2 y3 y4
4.127269 4.127629 4.122620 4.123249
# correlation coefficients
cat('correlation coefficients:\n')
correlation coefficients:
cor(x, y)
y1 y2 y3 y4
x1 0.8164205 0.8162365 0.8162867 -0.3140467
x2 0.8164205 0.8162365 0.8162867 -0.3140467
x3 0.8164205 0.8162365 0.8162867 -0.3140467
x4 -0.5290927 -0.7184365 -0.3446610 0.8165214
linear regression
# dataset 1
lm1 <- lm(y1 ~ x1)
summary(lm1)
Call:
lm(formula = y1 ~ x1)
Residuals:
Min 1Q Median 3Q Max
-1.92127 -0.45577 -0.04136 0.70941 1.83882
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.0001 1.1247 2.667 0.02573 *
x1 0.5001 0.1179 4.241 0.00217 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.237 on 9 degrees of freedom
Multiple R-squared: 0.6665, Adjusted R-squared: 0.6295
F-statistic: 17.99 on 1 and 9 DF, p-value: 0.00217
# dataset 2
lm2 <- lm(y2 ~ x2)
summary(lm2)
Call:
lm(formula = y2 ~ x2)
Residuals:
Min 1Q Median 3Q Max
-1.9009 -0.7609 0.1291 0.9491 1.2691
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.001 1.125 2.667 0.02576 *
x2 0.500 0.118 4.239 0.00218 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.237 on 9 degrees of freedom
Multiple R-squared: 0.6662, Adjusted R-squared: 0.6292
F-statistic: 17.97 on 1 and 9 DF, p-value: 0.002179
# dataset 3
lm3 <- lm(y3 ~ x3)
summary(lm3)
Call:
lm(formula = y3 ~ x3)
Residuals:
Min 1Q Median 3Q Max
-1.1586 -0.6146 -0.2303 0.1540 3.2411
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.0025 1.1245 2.670 0.02562 *
x3 0.4997 0.1179 4.239 0.00218 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.236 on 9 degrees of freedom
Multiple R-squared: 0.6663, Adjusted R-squared: 0.6292
F-statistic: 17.97 on 1 and 9 DF, p-value: 0.002176
# dataset 4
lm4 <- lm(y4 ~ x4)
summary(lm4)
Call:
lm(formula = y4 ~ x4)
Residuals:
Min 1Q Median 3Q Max
-1.751 -0.831 0.000 0.809 1.839
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.0017 1.1239 2.671 0.02559 *
x4 0.4999 0.1178 4.243 0.00216 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.236 on 9 degrees of freedom
Multiple R-squared: 0.6667, Adjusted R-squared: 0.6297
F-statistic: 18 on 1 and 9 DF, p-value: 0.002165
coefficients matrix
coefficients_matrix <- rbind(
coef(lm1),
coef(lm2),
coef(lm3),
coef(lm4)
)
rownames(coefficients_matrix) <- c("lm1", "lm2", "lm3", "lm4")
colnames(coefficients_matrix) <- c("Intercept", "Slope")
coefficients_matrix
Intercept Slope
lm1 3.000091 0.5000909
lm2 3.000909 0.5000000
lm3 3.002455 0.4997273
lm4 3.001727 0.4999091
scatter plots
#png("anscombe_scatterplot.png", width = 6, height = 6, units = "in", res = 300)
par(mfrow = c(2, 2))
plot(x1, y1, main = "Dataset 1", pch = 19, xlim = c(4, 20), ylim = c(4, 15))
abline(lm1, col = "red")
plot(x2, y2, main = "Dataset 2", pch = 19, xlim = c(4, 20), ylim = c(4, 15))
abline(lm2, col = "red")
plot(x3, y3, main = "Dataset 3", pch = 19, xlim = c(4, 20), ylim = c(4, 15))
abline(lm3, col = "red")
plot(x4, y4, main = "Dataset 4", pch = 19, xlim = c(4, 20), ylim = c(4, 15))
abline(lm4, col = "red")

#dev.off()
boxplots
#png("anscombe_boxplot.png", width = 8, height = 6, units = "in", res = 300)
boxplot(cbind(x, y),
main = "Boxplots of Anscombe's Quartet",
horizontal = TRUE
)

#dev.off()
LS0tDQp0aXRsZTogIkFuc2NvbWJlJ3MgcXVhcnRldCINCmF1dGhvcjogIkhzdSwgWWFvLUNoaWgiDQpkYXRlOiAiMjAyNS0wNi0wMiINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMgbG9hZCBkYXRhc2V0cw0KYGBge3J9DQojIGRhdGFzZXQgMQ0KeDEgPC0gYygxMC4wLCA4LjAsIDEzLjAsIDkuMCwgMTEuMCwgMTQuMCwgNi4wLCA0LjAsIDEyLjAsIDcuMCwgNS4wKQ0KeTEgPC0gYyg4LjA0LCA2Ljk1LCA3LjU4LCA4LjgxLCA4LjMzLCA5Ljk2LCA3LjI0LCA0LjI2LCAxMC44NCwgNC44MiwgNS42OCkNCg0KIyBkYXRhc2V0IDINCngyIDwtIGMoMTAuMCwgOC4wLCAxMy4wLCA5LjAsIDExLjAsIDE0LjAsIDYuMCwgNC4wLCAxMi4wLCA3LjAsIDUuMCkNCnkyIDwtIGMoOS4xNCwgOC4xNCwgOC43NCwgOC43NywgOS4yNiwgOC4xMCwgNi4xMywgMy4xMCwgOS4xMywgNy4yNiwgNC43NCkNCg0KIyBkYXRhc2V0IDMNCngzIDwtIGMoMTAuMCwgOC4wLCAxMy4wLCA5LjAsIDExLjAsIDE0LjAsIDYuMCwgNC4wLCAxMi4wLCA3LjAsIDUuMCkNCnkzIDwtIGMoNy40NiwgNi43NywgMTIuNzQsIDcuMTEsIDcuODEsIDguODQsIDYuMDgsIDUuMzksIDguMTUsIDYuNDIsIDUuNzMpDQoNCiMgZGF0YXNldCA0DQp4NCA8LSBjKDguMCwgOC4wLCA4LjAsIDguMCwgOC4wLCA4LjAsIDguMCwgMTkuMCwgOC4wLCA4LjAsIDguMCkNCnk0IDwtIGMoNi41OCwgNS43NiwgNy43MSwgOC44NCwgOC40NywgNy4wNCwgNS4yNSwgMTIuNTAsIDUuNTYsIDcuOTEsIDYuODkpDQoNCiMgY29sbGFjdGlvbnMNCnggPSBjYmluZCh4MSwgeDIsIHgzLCB4NCkNCnkgPSBjYmluZCh5MSwgeTIsIHkzLCB5NCkNCg0KIyBwcmludA0KY2F0KCd4OlxuJykNCnByaW50KHgpDQoNCmNhdCgneTpcbicpDQpwcmludCh5KQ0KYGBgDQoNCiMgbWVhbnMsIHZhcmlhbmNlcywgYW5kIGNvcnJlbGF0aW9uIGNvZWZmaWNpZW50cw0KYGBge3J9DQojIG1lYW5zDQpjYXQoJ21lYW5zOlxuJykNCmNvbE1lYW5zKHgpDQpjb2xNZWFucyh5KQ0KDQojIHZhcmlhbmNlcw0KY2F0KCd2YXJpYW5jZXM6XG4nKQ0KYXBwbHkoeCwgMiwgdmFyKQ0KYXBwbHkoeSwgMiwgdmFyKQ0KDQojIGNvcnJlbGF0aW9uIGNvZWZmaWNpZW50cw0KY2F0KCdjb3JyZWxhdGlvbiBjb2VmZmljaWVudHM6XG4nKQ0KY29yKHgsIHkpDQpgYGANCg0KIyBsaW5lYXIgcmVncmVzc2lvbg0KYGBge3J9DQojIGRhdGFzZXQgMQ0KbG0xIDwtIGxtKHkxIH4geDEpDQpzdW1tYXJ5KGxtMSkNCmBgYA0KDQpgYGB7cn0NCiMgZGF0YXNldCAyDQpsbTIgPC0gbG0oeTIgfiB4MikNCnN1bW1hcnkobG0yKQ0KYGBgDQoNCmBgYHtyfQ0KIyBkYXRhc2V0IDMNCmxtMyA8LSBsbSh5MyB+IHgzKQ0Kc3VtbWFyeShsbTMpDQpgYGANCg0KYGBge3J9DQojIGRhdGFzZXQgNA0KbG00IDwtIGxtKHk0IH4geDQpDQpzdW1tYXJ5KGxtNCkNCmBgYA0KIyBjb2VmZmljaWVudHMgbWF0cml4DQpgYGB7cn0NCmNvZWZmaWNpZW50c19tYXRyaXggPC0gcmJpbmQoDQogIGNvZWYobG0xKSwNCiAgY29lZihsbTIpLA0KICBjb2VmKGxtMyksDQogIGNvZWYobG00KQ0KKQ0KDQpyb3duYW1lcyhjb2VmZmljaWVudHNfbWF0cml4KSA8LSBjKCJsbTEiLCAibG0yIiwgImxtMyIsICJsbTQiKQ0KY29sbmFtZXMoY29lZmZpY2llbnRzX21hdHJpeCkgPC0gYygiSW50ZXJjZXB0IiwgIlNsb3BlIikNCg0KY29lZmZpY2llbnRzX21hdHJpeA0KYGBgDQoNCiMgc2NhdHRlciBwbG90cw0KYGBge3J9DQojcG5nKCJhbnNjb21iZV9zY2F0dGVycGxvdC5wbmciLCB3aWR0aCA9IDYsIGhlaWdodCA9IDYsIHVuaXRzID0gImluIiwgcmVzID0gMzAwKQ0KcGFyKG1mcm93ID0gYygyLCAyKSkNCg0KcGxvdCh4MSwgeTEsIG1haW4gPSAiRGF0YXNldCAxIiwgcGNoID0gMTksIHhsaW0gPSBjKDQsIDIwKSwgeWxpbSA9IGMoNCwgMTUpKQ0KYWJsaW5lKGxtMSwgY29sID0gInJlZCIpDQoNCnBsb3QoeDIsIHkyLCBtYWluID0gIkRhdGFzZXQgMiIsIHBjaCA9IDE5LCB4bGltID0gYyg0LCAyMCksIHlsaW0gPSBjKDQsIDE1KSkNCmFibGluZShsbTIsIGNvbCA9ICJyZWQiKQ0KDQpwbG90KHgzLCB5MywgbWFpbiA9ICJEYXRhc2V0IDMiLCBwY2ggPSAxOSwgeGxpbSA9IGMoNCwgMjApLCB5bGltID0gYyg0LCAxNSkpDQphYmxpbmUobG0zLCBjb2wgPSAicmVkIikNCg0KcGxvdCh4NCwgeTQsIG1haW4gPSAiRGF0YXNldCA0IiwgcGNoID0gMTksIHhsaW0gPSBjKDQsIDIwKSwgeWxpbSA9IGMoNCwgMTUpKQ0KYWJsaW5lKGxtNCwgY29sID0gInJlZCIpDQoNCiNkZXYub2ZmKCkNCmBgYA0KDQojIGJveHBsb3RzDQpgYGB7cn0NCiNwbmcoImFuc2NvbWJlX2JveHBsb3QucG5nIiwgd2lkdGggPSA4LCBoZWlnaHQgPSA2LCB1bml0cyA9ICJpbiIsIHJlcyA9IDMwMCkNCg0KYm94cGxvdChjYmluZCh4LCB5KSwNCiAgICAgICAgbWFpbiA9ICJCb3hwbG90cyBvZiBBbnNjb21iZSdzIFF1YXJ0ZXQiLA0KICAgICAgICBob3Jpem9udGFsID0gVFJVRQ0KKQ0KDQojZGV2Lm9mZigpDQpgYGANCg0KDQoNCg0KDQo=