{ "cells": [ { "cell_type": "markdown", "id": "a375bf72-967d-47ca-8a78-2f0280568fe5", "metadata": {}, "source": [ "# Linear regression" ] }, { "cell_type": "code", "execution_count": null, "id": "fa1f6c1b-fbfa-441a-a4ba-d6d2fa73be95", "metadata": {}, "outputs": [], "source": [ "\n", "\"\"\"\n", " alpha, beta, sigma = linear_regression(x, y)\n", "\n", "Linear regression y = alpha + beta * x. sigma is the standard deviation for beta.\n", "\"\"\"\n", "function linear_regression(x, y)\n", " n = length(x)\n", " xbar = sum(x) / n\n", " ybar = sum(y) / n\n", " sx2 = sum((x .- xbar) .^ 2)\n", " sxy = sum((x .- xbar) .* (y .- ybar))\n", " beta = sxy / sx2\n", " alpha = ybar - beta * xbar\n", " sigma = sqrt( sum((y .- alpha .- beta .* x) .^ 2) / ((n - 2) * sx2))\n", " return alpha, beta, sigma\n", "end" ] }, { "cell_type": "code", "execution_count": null, "id": "b5bb2b50-99a6-448b-9c57-7f2bc807a7e7", "metadata": {}, "outputs": [], "source": [ "\n", "xmin = 0.0\n", "xmax = 10.0\n", "np = 200\n", "x = range(xmin, xmax, np)\n", "y = 1.0 .+ 2 .* x .+ 1.5 .* randn(np);" ] }, { "cell_type": "code", "execution_count": null, "id": "6ff1ad04-a26b-41c0-b57d-d9fb13d5d50a", "metadata": {}, "outputs": [], "source": [ "using PyPlot" ] }, { "cell_type": "code", "execution_count": null, "id": "6a8a5b30-2fd6-4329-87a2-f8b5555ea1b7", "metadata": {}, "outputs": [], "source": [ "\n", "plot(x, y, linestyle=\"none\", marker=\".\")\n", "grid(true)\n", "xlabel(\"x\")\n", "ylabel(\"y\")\n", "title(\"Raw data\");" ] }, { "cell_type": "code", "execution_count": null, "id": "d548b3de-4fa8-437b-9d5b-41313e5dc6fa", "metadata": {}, "outputs": [], "source": [ "\n", "alpha, beta, sigma = linear_regression(x, y)" ] }, { "cell_type": "code", "execution_count": null, "id": "2efad8ac-04ff-400e-bc0e-94d0b6d963a7", "metadata": {}, "outputs": [], "source": [ "\n", "plot(x, y, linestyle=\"none\", marker=\".\", label=\"Raw data\")\n", "plot(x, alpha .+ beta .* x, linestyle=\"solid\", label=\"LSF\")\n", "grid(true)\n", "xlabel(\"x\")\n", "ylabel(\"y\")\n", "title(\"Linear regression\");" ] }, { "cell_type": "code", "execution_count": null, "id": "38dcfb46-f0a7-45a7-9d12-d39d737e06c9", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.10.5", "language": "julia", "name": "julia-1.10" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.10.5" } }, "nbformat": 4, "nbformat_minor": 5 }