X-Git-Url: https://git.njae.me.uk/?p=ou-jupyter-r-demo.git;a=blobdiff_plain;f=section5.1solutions.ipynb;h=1ef5c8ed7b6f0fe166321e15c9debcbac63adbd7;hp=4c7507abcabe361a0a4de9dc6951fdad9355f2d8;hb=923ed635a8798313db455184de7a575f49e7d05c;hpb=ff5d747cb96e0759c2ba2c7f8e057a78ce2206f4 diff --git a/section5.1solutions.ipynb b/section5.1solutions.ipynb index 4c7507a..1ef5c8e 100644 --- a/section5.1solutions.ipynb +++ b/section5.1solutions.ipynb @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": { "hidden": true, "init_cell": true @@ -36,83 +36,13 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { - "hidden": true, "init_cell": true }, "outputs": [], "source": [ - "# Multiple plot function\n", - "#\n", - "# ggplot objects can be passed in ..., or to plotlist (as a list of ggplot objects)\n", - "# - cols: Number of columns in layout\n", - "# - layout: A matrix specifying the layout. If present, 'cols' is ignored.\n", - "#\n", - "# If the layout is something like matrix(c(1,2,3,3), nrow=2, byrow=TRUE),\n", - "# then plot 1 will go in the upper left, 2 will go in the upper right, and\n", - "# 3 will go all the way across the bottom.\n", - "#\n", - "multiplot <- function(..., plotlist=NULL, file, cols=1, layout=NULL) {\n", - " library(grid)\n", - "\n", - " # Make a list from the ... arguments and plotlist\n", - " plots <- c(list(...), plotlist)\n", - "\n", - " numPlots = length(plots)\n", - "\n", - " # If layout is NULL, then use 'cols' to determine layout\n", - " if (is.null(layout)) {\n", - " # Make the panel\n", - " # ncol: Number of columns of plots\n", - " # nrow: Number of rows needed, calculated from # of cols\n", - " layout <- matrix(seq(1, cols * ceiling(numPlots/cols)),\n", - " ncol = cols, nrow = ceiling(numPlots/cols))\n", - " }\n", - "\n", - " if (numPlots==1) {\n", - " print(plots[[1]])\n", - "\n", - " } else {\n", - " # Set up the page\n", - " grid.newpage()\n", - " pushViewport(viewport(layout = grid.layout(nrow(layout), ncol(layout))))\n", - "\n", - " # Make each plot, in the correct location\n", - " for (i in 1:numPlots) {\n", - " # Get the i,j matrix positions of the regions that contain this subplot\n", - " matchidx <- as.data.frame(which(layout == i, arr.ind = TRUE))\n", - "\n", - " print(plots[[i]], vp = viewport(layout.pos.row = matchidx$row,\n", - " layout.pos.col = matchidx$col))\n", - " }\n", - " }\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "hidden": true, - "init_cell": true - }, - "outputs": [], - "source": [ - "# From https://sejohnston.com/2012/08/09/a-quick-and-easy-function-to-plot-lm-results-in-r/\n", - "ggplotRegression <- function (fit) {\n", - "\n", - "require(ggplot2)\n", - "\n", - "ggplot(fit$model, aes_string(x = names(fit$model)[2], y = names(fit$model)[1])) + \n", - " geom_point() +\n", - " stat_smooth(method = \"lm\", col = \"red\") +\n", - " labs(title = paste(\"Adj R2 = \",signif(summary(fit)$adj.r.squared, 5),\n", - " \"Intercept =\",signif(fit$coef[[1]],5 ),\n", - " \" Slope =\",signif(fit$coef[[2]], 5),\n", - " \" P =\",signif(summary(fit)$coef[2,4], 5))) + \n", - " theme(plot.title = element_text(size=12))\n", - "}" + "source('plot_extensions.R')" ] }, { @@ -131,7 +61,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -202,7 +132,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -223,6 +153,13 @@ "multiplot(taheat, tsheat, cols=2)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Blah, blah, comment, blah." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -232,7 +169,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -300,14 +237,14 @@ } ], "source": [ - "fit <- lm(heat ~ TA, data = cemheat)\n", - "summary(fit)\n", - "anova(fit)" + "fit.ta <- lm(heat ~ TA, data = cemheat)\n", + "summary(fit.ta)\n", + "anova(fit.ta)" ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -327,12 +264,12 @@ } ], "source": [ - "ggplotRegression(fit)" + "ggplotRegression(fit.ta)" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -400,14 +337,14 @@ } ], "source": [ - "fit <- lm(heat ~ TS, data = cemheat)\n", - "summary(fit)\n", - "anova(fit)" + "fit.ts <- lm(heat ~ TS, data = cemheat)\n", + "summary(fit.ts)\n", + "anova(fit.ts)" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -427,12 +364,12 @@ } ], "source": [ - "ggplotRegression(fit)" + "ggplotRegression(fit.ts)" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -505,9 +442,71 @@ } ], "source": [ - "fit <- lm(heat ~ TA + TS, data = cemheat)\n", - "summary(fit)\n", - "anova(fit)" + "fit.tats <- lm(heat ~ TA + TS, data = cemheat)\n", + "summary(fit.tats)\n", + "anova(fit.tats)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now combine the results into one dataframe for easy comparison." + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
Vars | Adj.R.2 |
---|---|
TA | 0.4915797 |
TS | 0.6359290 |
TA, TS | 0.9744140 |