From 510f095bf7c86f51658c9db93f569f71bfb5d75e Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 19 Sep 2018 10:34:36 +0000 Subject: [PATCH] :( --- exercises.ipynb | 108 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 99 insertions(+), 9 deletions(-) diff --git a/exercises.ipynb b/exercises.ipynb index 7196331..a811dfe 100644 --- a/exercises.ipynb +++ b/exercises.ipynb @@ -5,7 +5,6 @@ "execution_count": 1, "metadata": { "autoscroll": false, - "collapsed": false, "ein.hycell": false, "ein.tags": "worksheet-0", "slideshow": { @@ -39,7 +38,6 @@ "execution_count": null, "metadata": { "autoscroll": false, - "collapsed": false, "ein.hycell": false, "ein.tags": "worksheet-0", "slideshow": { @@ -60,7 +58,6 @@ "execution_count": null, "metadata": { "autoscroll": false, - "collapsed": false, "ein.hycell": false, "ein.tags": "worksheet-0", "slideshow": { @@ -77,8 +74,93 @@ "# sd of X's should be c(.2,.5,.3)\n", "# noise sd should be .5\n", "\n", - "params <- list(???)\n", - "class(params) <- \"multivariate_params\"" + "generate_data <- function (params) {\n", + " UseMethod(\"generate_data\")\n", + "}\n", + "\n", + "generate_data.multivariate_params <- function(params) {\n", + " \n", + " N <- params$N\n", + " beta <- params$beta\n", + " params1 <- cbind(params$means, params$sd)\n", + " sd <- params$noise \n", + " \n", + " x <- apply(params1, 1, function(x) rnorm(N, mean = x[1], sd = x[2]))\n", + " x <- cbind(rep(1, N), x)\n", + " eps <- rnorm(N, 0, sd)\n", + " y <- x%*%beta + eps\n", + " list(x = x, y = y)\n", + " \n", + "}\n", + " \n", + "generate_data.univariate_params <- function (N, beta, sd) {\n", + " \n", + " N <- params$N\n", + " beta <- params$beta\n", + " sd <- params$noise\n", + " \n", + " x <- rnorm(N, 0, 1)\n", + " eps <- rnorm(N, 0, sd)\n", + " y <- beta*x + eps\n", + " list(x = x, y = y)\n", + "}\n", + " \n", + "calc_coef <- function(y,x) {\n", + " coef <- solve(t(x)%*%x, t(x)%*%y)\n", + " coef\n", + "}\n", + " \n", + "calc_se <- function(y, x, coef) {\n", + " \n", + " eps <- y - x %*% coef\n", + " sigma2 <- (t(eps) %*% eps) / (nrow(x) - ncol(x))\n", + " varmatrix <- c(sigma2) * solve(t(x) %*% x)\n", + " se<- sqrt(diag(varmatrix))\n", + "}\n", + "\n", + "run_regression <- function(y, x) {\n", + " coef <- calc_coef(y, x)\n", + " se <- calc_se(y, x, coef)\n", + " model <- list(coef=coef, se=se)\n", + " class(model) <- \"simple_model\"\n", + " model\n", + "}\n", + " \n", + " \n", + " eval_model <- function(model, beta, conf = 1.96) {\n", + " UseMethod(\"eval_model\")\n", + "}\n", + " \n", + " \n", + "eval_model.simple_model <- function(model, beta, conf = 1.96) {\n", + " coef <- model$coef\n", + " se <- model$se\n", + " up <- coef + se*conf\n", + " down <- coef - se*conf\n", + " beta > down & beta < up\n", + "}\n", + "\n", + " \n", + "simulate <- function(N, beta, params, sd) {\n", + " d <- generate_data(N, beta, params, sd)\n", + " m <- run_regression(d$y, d$x)\n", + " eval_model(m$coef, m$se, beta)\n", + " }\n", + "\n", + " \n", + "avg_simulations <- function(M, N, beta, params, sd) {\n", + " inside <- sapply(1:M, function (x) {\n", + " simulate(N, beta, params, sd)\n", + "})\n", + " sum(inside) / M\n", + " }\n", + " \n", + "\n", + "\n", + "\n", + "\n", + "params <- list(N = N, beta = beta, means = params1, sd = sd, noise = noise)\n", + "class(params) <- c(\"univariate\", \"multivariate_params\") " ] }, { @@ -86,7 +168,6 @@ "execution_count": null, "metadata": { "autoscroll": false, - "collapsed": false, "ein.hycell": false, "ein.tags": "worksheet-0", "slideshow": { @@ -104,7 +185,6 @@ "execution_count": null, "metadata": { "autoscroll": false, - "collapsed": false, "ein.hycell": false, "ein.tags": "worksheet-0", "slideshow": { @@ -122,7 +202,6 @@ "execution_count": null, "metadata": { "autoscroll": false, - "collapsed": false, "ein.hycell": false, "ein.tags": "worksheet-0", "slideshow": { @@ -145,15 +224,26 @@ "\n", "# Note: be creative in your design! Add more classes if you think it helps!\n", "# Think about which functions you want to be class-agnostic and which to be\n", - "# class-aware! " + "# class-aware! \n", + "\n", + "\n" ] } ], "metadata": { "kernelspec": { "display_name": "R", + "language": "R", "name": "ir" }, + "language_info": { + "codemirror_mode": "r", + "file_extension": ".r", + "mimetype": "text/x-r-source", + "name": "R", + "pygments_lexer": "r", + "version": "3.4.1" + }, "name": "Untitled.ipynb" }, "nbformat": 4,