{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "
\n", " \n", " \"QuantEcon\"\n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Data and Statistics Packages" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Contents\n", "\n", "- [Data and Statistics Packages](#Data-and-Statistics-Packages) \n", " - [Overview](#Overview) \n", " - [DataFrames](#DataFrames) \n", " - [Statistics and Econometrics](#Statistics-and-Econometrics) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overview\n", "\n", "This lecture explores some of the key packages for working with data and doing statistics in Julia.\n", "\n", "In particular, we will examine the `DataFrame` object in detail (i.e., construction, manipulation, querying, visualization, and nuances like missing data).\n", "\n", "While Julia is not an ideal language for pure cookie-cutter statistical analysis, it has many useful packages to provide those tools as part of a more general solution.\n", "\n", "This list is not exhaustive, and others can be found in organizations such as [JuliaStats](https://github.com/JuliaStats), [JuliaData](https://github.com/JuliaData/), and [QueryVerse](https://github.com/queryverse)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Setup" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "hide-output": true }, "outputs": [], "source": [ "using InstantiateFromURL\n", "# optionally add arguments to force installation: instantiate = true, precompile = true\n", "github_project(\"QuantEcon/quantecon-notebooks-julia\", version = \"0.8.0\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "hide-output": true }, "outputs": [], "source": [ "using LinearAlgebra, Statistics\n", "using DataFrames, RDatasets, DataFramesMeta, CategoricalArrays, Query, VegaLite\n", "using GLM" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## DataFrames\n", "\n", "A useful package for working with data is [DataFrames.jl](https://github.com/JuliaStats/DataFrames.jl).\n", "\n", "The most important data type provided is a `DataFrame`, a two dimensional array for storing heterogeneous data.\n", "\n", "Although data can be heterogeneous within a `DataFrame`, the contents of the columns must be homogeneous\n", "(of the same type).\n", "\n", "This is analogous to a `data.frame` in R, a `DataFrame` in Pandas (Python) or, more loosely, a spreadsheet in Excel.\n", "\n", "There are a few different ways to create a DataFrame." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Constructing and Accessing a DataFrame\n", "\n", "The first is to set up columns and construct a dataframe by assigning names" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/html": [ "

4 rows × 2 columns

commodprice
StringFloat64?
1crude4.2
2gas11.3
3gold12.1
4silvermissing
" ], "text/latex": [ "\\begin{tabular}{r|cc}\n", "\t& commod & price\\\\\n", "\t\\hline\n", "\t& String & Float64?\\\\\n", "\t\\hline\n", "\t1 & crude & 4.2 \\\\\n", "\t2 & gas & 11.3 \\\\\n", "\t3 & gold & 12.1 \\\\\n", "\t4 & silver & \\emph{missing} \\\\\n", "\\end{tabular}\n" ], "text/plain": [ "4×2 DataFrame\n", "│ Row │ commod │ price │\n", "│ │ \u001b[90mString\u001b[39m │ \u001b[90mFloat64?\u001b[39m │\n", "├─────┼────────┼──────────┤\n", "│ 1 │ crude │ 4.2 │\n", "│ 2 │ gas │ 11.3 │\n", "│ 3 │ gold │ 12.1 │\n", "│ 4 │ silver │ \u001b[90mmissing\u001b[39m │" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using DataFrames, RDatasets # RDatasets provides good standard data examples from R\n", "\n", "# note use of missing\n", "commodities = [\"crude\", \"gas\", \"gold\", \"silver\"]\n", "last_price = [4.2, 11.3, 12.1, missing]\n", "df = DataFrame(commod = commodities, price = last_price)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Columns of the `DataFrame` can be accessed by name using `df.col`, as below" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "4-element Array{Union{Missing, Float64},1}:\n", " 4.2\n", " 11.3\n", " 12.1\n", " missing" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.price" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the type of this array has values `Union{Missing, Float64}` since it was created with a `missing` value." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "4-element Array{String,1}:\n", " \"crude\"\n", " \"gas\"\n", " \"gold\"\n", " \"silver\"" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.commod" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `DataFrames.jl` package provides a number of methods for acting on `DataFrame`’s, such as `describe`." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/html": [ "

2 rows × 8 columns

variablemeanminmedianmaxnuniquenmissingeltype
SymbolUnion…AnyUnion…AnyUnion…Union…Type
1commodcrudesilver4String
2price9.24.211.312.11Union{Missing, Float64}
" ], "text/latex": [ "\\begin{tabular}{r|cccccccc}\n", "\t& variable & mean & min & median & max & nunique & nmissing & eltype\\\\\n", "\t\\hline\n", "\t& Symbol & Union… & Any & Union… & Any & Union… & Union… & Type\\\\\n", "\t\\hline\n", "\t1 & commod & & crude & & silver & 4 & & String \\\\\n", "\t2 & price & 9.2 & 4.2 & 11.3 & 12.1 & & 1 & Union\\{Missing, Float64\\} \\\\\n", "\\end{tabular}\n" ], "text/plain": [ "2×8 DataFrame. Omitted printing of 1 columns\n", "│ Row │ variable │ mean │ min │ median │ max │ nunique │ nmissing │\n", "│ │ \u001b[90mSymbol\u001b[39m │ \u001b[90mUnion…\u001b[39m │ \u001b[90mAny\u001b[39m │ \u001b[90mUnion…\u001b[39m │ \u001b[90mAny\u001b[39m │ \u001b[90mUnion…\u001b[39m │ \u001b[90mUnion…\u001b[39m │\n", "├─────┼──────────┼────────┼───────┼────────┼────────┼─────────┼──────────┤\n", "│ 1 │ commod │ │ crude │ │ silver │ 4 │ │\n", "│ 2 │ price │ 9.2 │ 4.2 │ 11.3 │ 12.1 │ │ 1 │" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "DataFrames.describe(df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While often data will be generated all at once, or read from a file, you can add to a `DataFrame` by providing the key parameters." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/html": [ "

5 rows × 2 columns

commodprice
StringFloat64?
1crude4.2
2gas11.3
3gold12.1
4silvermissing
5nickel5.1
" ], "text/latex": [ "\\begin{tabular}{r|cc}\n", "\t& commod & price\\\\\n", "\t\\hline\n", "\t& String & Float64?\\\\\n", "\t\\hline\n", "\t1 & crude & 4.2 \\\\\n", "\t2 & gas & 11.3 \\\\\n", "\t3 & gold & 12.1 \\\\\n", "\t4 & silver & \\emph{missing} \\\\\n", "\t5 & nickel & 5.1 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ "5×2 DataFrame\n", "│ Row │ commod │ price │\n", "│ │ \u001b[90mString\u001b[39m │ \u001b[90mFloat64?\u001b[39m │\n", "├─────┼────────┼──────────┤\n", "│ 1 │ crude │ 4.2 │\n", "│ 2 │ gas │ 11.3 │\n", "│ 3 │ gold │ 12.1 │\n", "│ 4 │ silver │ \u001b[90mmissing\u001b[39m │\n", "│ 5 │ nickel │ 5.1 │" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nt = (commod = \"nickel\", price= 5.1)\n", "push!(df, nt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Named tuples can also be used to construct a `DataFrame`, and have it properly deduce all types." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/html": [ "

2 rows × 2 columns

tcol1
Int64Float64
113.0
224.0
" ], "text/latex": [ "\\begin{tabular}{r|cc}\n", "\t& t & col1\\\\\n", "\t\\hline\n", "\t& Int64 & Float64\\\\\n", "\t\\hline\n", "\t1 & 1 & 3.0 \\\\\n", "\t2 & 2 & 4.0 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ "2×2 DataFrame\n", "│ Row │ t │ col1 │\n", "│ │ \u001b[90mInt64\u001b[39m │ \u001b[90mFloat64\u001b[39m │\n", "├─────┼───────┼─────────┤\n", "│ 1 │ 1 │ 3.0 │\n", "│ 2 │ 2 │ 4.0 │" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nt = (t = 1, col1 = 3.0)\n", "df2 = DataFrame([nt])\n", "push!(df2, (t=2, col1 = 4.0))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to modify a column, access the mutating version by the symbol `df[!, :col]`." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "5-element Array{Union{Missing, Float64},1}:\n", " 4.2\n", " 11.3\n", " 12.1\n", " missing\n", " 5.1" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[!, :price]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which allows modifications, like other mutating `!` functions in julia." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "5-element Array{Union{Missing, Float64},1}:\n", " 8.4\n", " 22.6\n", " 24.2\n", " missing\n", " 10.2" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[!, :price] *= 2.0 # double prices" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As discussed in the next section, note that the [fundamental types](../getting_started_julia/fundamental_types.html#missing), is propagated, i.e. `missing * 2 === missing`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Working with Missing\n", "\n", "As we discussed in [fundamental types](../getting_started_julia/fundamental_types.html#missing), the semantics of `missing` are that mathematical operations will not silently ignore it.\n", "\n", "In order to allow `missing` in a column, you can create/load the `DataFrame`\n", "from a source with `missing`’s, or call `allowmissing!` on a column." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/html": [ "

4 rows × 2 columns

tcol1
Int64Float64?
113.0
224.0
33missing
445.1
" ], "text/latex": [ "\\begin{tabular}{r|cc}\n", "\t& t & col1\\\\\n", "\t\\hline\n", "\t& Int64 & Float64?\\\\\n", "\t\\hline\n", "\t1 & 1 & 3.0 \\\\\n", "\t2 & 2 & 4.0 \\\\\n", "\t3 & 3 & \\emph{missing} \\\\\n", "\t4 & 4 & 5.1 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ "4×2 DataFrame\n", "│ Row │ t │ col1 │\n", "│ │ \u001b[90mInt64\u001b[39m │ \u001b[90mFloat64?\u001b[39m │\n", "├─────┼───────┼──────────┤\n", "│ 1 │ 1 │ 3.0 │\n", "│ 2 │ 2 │ 4.0 │\n", "│ 3 │ 3 │ \u001b[90mmissing\u001b[39m │\n", "│ 4 │ 4 │ 5.1 │" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "allowmissing!(df2, :col1) # necessary to add in a for col1\n", "push!(df2, (t=3, col1 = missing))\n", "push!(df2, (t=4, col1 = 5.1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see the propagation of `missing` to caller functions, as well as a way to efficiently calculate with non-missing data." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mean(df2.col1) = missing\n", "mean(skipmissing(df2.col1)) = 4.033333333333333\n" ] }, { "data": { "text/plain": [ "4.033333333333333" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "@show mean(df2.col1)\n", "@show mean(skipmissing(df2.col1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And to replace the `missing`" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "4-element Array{Union{Missing, Float64},1}:\n", " 3.0\n", " 4.0\n", " 0.0\n", " 5.1" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2.col1 .= coalesce.(df2.col1, 0.0) # replace all missing with 0.0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Manipulating and Transforming DataFrames\n", "\n", "One way to do an additional calculation with a `DataFrame` is to tuse the `@transform` macro from `DataFramesMeta.jl`." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/html": [ "

4 rows × 3 columns

tcol1col2
Int64Float64?Float64
113.09.0
224.016.0
330.00.0
445.126.01
" ], "text/latex": [ "\\begin{tabular}{r|ccc}\n", "\t& t & col1 & col2\\\\\n", "\t\\hline\n", "\t& Int64 & Float64? & Float64\\\\\n", "\t\\hline\n", "\t1 & 1 & 3.0 & 9.0 \\\\\n", "\t2 & 2 & 4.0 & 16.0 \\\\\n", "\t3 & 3 & 0.0 & 0.0 \\\\\n", "\t4 & 4 & 5.1 & 26.01 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ "4×3 DataFrame\n", "│ Row │ t │ col1 │ col2 │\n", "│ │ \u001b[90mInt64\u001b[39m │ \u001b[90mFloat64?\u001b[39m │ \u001b[90mFloat64\u001b[39m │\n", "├─────┼───────┼──────────┼─────────┤\n", "│ 1 │ 1 │ 3.0 │ 9.0 │\n", "│ 2 │ 2 │ 4.0 │ 16.0 │\n", "│ 3 │ 3 │ 0.0 │ 0.0 │\n", "│ 4 │ 4 │ 5.1 │ 26.01 │" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using DataFramesMeta\n", "f(x) = x^2\n", "df2 = @transform(df2, col2 = f.(:col1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Categorical Data\n", "\n", "For data that is [categorical](https://juliadata.github.io/DataFrames.jl/stable/man/categorical/)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/html": [ "

4 rows × 2 columns

idy
Int64Cat…
11old
22young
33young
44old
" ], "text/latex": [ "\\begin{tabular}{r|cc}\n", "\t& id & y\\\\\n", "\t\\hline\n", "\t& Int64 & Cat…\\\\\n", "\t\\hline\n", "\t1 & 1 & old \\\\\n", "\t2 & 2 & young \\\\\n", "\t3 & 3 & young \\\\\n", "\t4 & 4 & old \\\\\n", "\\end{tabular}\n" ], "text/plain": [ "4×2 DataFrame\n", "│ Row │ id │ y │\n", "│ │ \u001b[90mInt64\u001b[39m │ \u001b[90mCat…\u001b[39m │\n", "├─────┼───────┼───────┤\n", "│ 1 │ 1 │ old │\n", "│ 2 │ 2 │ young │\n", "│ 3 │ 3 │ young │\n", "│ 4 │ 4 │ old │" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using CategoricalArrays\n", "id = [1, 2, 3, 4]\n", "y = [\"old\", \"young\", \"young\", \"old\"]\n", "y = CategoricalArray(y)\n", "df = DataFrame(id=id, y=y)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "2-element Array{String,1}:\n", " \"old\"\n", " \"young\"" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "levels(df.y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Visualization, Querying, and Plots\n", "\n", "The `DataFrame` (and similar types that fulfill a standard generic interface) can fit into a variety of packages.\n", "\n", "One set of them is the [QueryVerse](https://github.com/queryverse).\n", "\n", "**Note:** The QueryVerse, in the same spirit as R’s tidyverse, makes heavy use of the pipeline syntax `|>`." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "g(f(x)) = 2.1972245773362196\n", "(x |> f) |> g = " ] }, { "name": "stdout", "output_type": "stream", "text": [ "2.1972245773362196\n" ] } ], "source": [ "x = 3.0\n", "f(x) = x^2\n", "g(x) = log(x)\n", "\n", "@show g(f(x))\n", "@show x |> f |> g; # pipes nest function calls" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To give an example directly from the source of the LINQ inspired [Query.jl](http://www.queryverse.org/Query.jl/stable/)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/html": [ "

1 rows × 2 columns

namechildren
StringInt64
1Kirk2
" ], "text/latex": [ "\\begin{tabular}{r|cc}\n", "\t& name & children\\\\\n", "\t\\hline\n", "\t& String & Int64\\\\\n", "\t\\hline\n", "\t1 & Kirk & 2 \\\\\n", "\\end{tabular}\n" ], "text/plain": [ "1×2 DataFrame\n", "│ Row │ name │ children │\n", "│ │ \u001b[90mString\u001b[39m │ \u001b[90mInt64\u001b[39m │\n", "├─────┼────────┼──────────┤\n", "│ 1 │ Kirk │ 2 │" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using Query\n", "\n", "df = DataFrame(name=[\"John\", \"Sally\", \"Kirk\"], age=[23., 42., 59.], children=[3,5,2])\n", "\n", "x = @from i in df begin\n", " @where i.age>50\n", " @select {i.name, i.children}\n", " @collect DataFrame\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While it is possible to just use the `Plots.jl` library, there may be better options for displaying tabular data – such as [VegaLite.jl](https://github.com/queryverse/VegaLite.jl)." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "hide-output": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARN Missing type for channel \"color\", using \"nominal\" instead.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARN Missing type for channel \"color\", using \"nominal\" instead.\n" ] }, { "data": { "application/vnd.vegalite.v4+json": { "data": { "values": [ { "PetalLength": 1.4, "PetalWidth": 0.2, "SepalLength": 5.1, "SepalWidth": 3.5, "Species": "setosa" }, { "PetalLength": 1.4, "PetalWidth": 0.2, "SepalLength": 4.9, "SepalWidth": 3.0, "Species": "setosa" }, { "PetalLength": 1.3, "PetalWidth": 0.2, "SepalLength": 4.7, "SepalWidth": 3.2, "Species": "setosa" }, { "PetalLength": 1.5, "PetalWidth": 0.2, "SepalLength": 4.6, "SepalWidth": 3.1, "Species": "setosa" }, { "PetalLength": 1.4, "PetalWidth": 0.2, "SepalLength": 5.0, "SepalWidth": 3.6, "Species": "setosa" }, { "PetalLength": 1.7, "PetalWidth": 0.4, "SepalLength": 5.4, "SepalWidth": 3.9, "Species": "setosa" }, { "PetalLength": 1.4, "PetalWidth": 0.3, "SepalLength": 4.6, "SepalWidth": 3.4, "Species": "setosa" }, { "PetalLength": 1.5, "PetalWidth": 0.2, "SepalLength": 5.0, "SepalWidth": 3.4, "Species": "setosa" }, { "PetalLength": 1.4, "PetalWidth": 0.2, "SepalLength": 4.4, "SepalWidth": 2.9, "Species": "setosa" }, { "PetalLength": 1.5, "PetalWidth": 0.1, "SepalLength": 4.9, "SepalWidth": 3.1, "Species": "setosa" }, { "PetalLength": 1.5, "PetalWidth": 0.2, "SepalLength": 5.4, "SepalWidth": 3.7, "Species": "setosa" }, { "PetalLength": 1.6, "PetalWidth": 0.2, "SepalLength": 4.8, "SepalWidth": 3.4, "Species": "setosa" }, { "PetalLength": 1.4, "PetalWidth": 0.1, "SepalLength": 4.8, "SepalWidth": 3.0, "Species": "setosa" }, { "PetalLength": 1.1, "PetalWidth": 0.1, "SepalLength": 4.3, "SepalWidth": 3.0, "Species": "setosa" }, { "PetalLength": 1.2, "PetalWidth": 0.2, "SepalLength": 5.8, "SepalWidth": 4.0, "Species": "setosa" }, { "PetalLength": 1.5, "PetalWidth": 0.4, "SepalLength": 5.7, "SepalWidth": 4.4, "Species": "setosa" }, { "PetalLength": 1.3, "PetalWidth": 0.4, "SepalLength": 5.4, "SepalWidth": 3.9, "Species": "setosa" }, { "PetalLength": 1.4, "PetalWidth": 0.3, "SepalLength": 5.1, "SepalWidth": 3.5, "Species": "setosa" }, { "PetalLength": 1.7, "PetalWidth": 0.3, "SepalLength": 5.7, "SepalWidth": 3.8, "Species": "setosa" }, { "PetalLength": 1.5, "PetalWidth": 0.3, "SepalLength": 5.1, "SepalWidth": 3.8, "Species": "setosa" }, { "PetalLength": 1.7, "PetalWidth": 0.2, "SepalLength": 5.4, "SepalWidth": 3.4, "Species": "setosa" }, { "PetalLength": 1.5, "PetalWidth": 0.4, "SepalLength": 5.1, "SepalWidth": 3.7, "Species": "setosa" }, { "PetalLength": 1.0, "PetalWidth": 0.2, "SepalLength": 4.6, "SepalWidth": 3.6, "Species": "setosa" }, { "PetalLength": 1.7, "PetalWidth": 0.5, "SepalLength": 5.1, "SepalWidth": 3.3, "Species": "setosa" }, { "PetalLength": 1.9, "PetalWidth": 0.2, "SepalLength": 4.8, "SepalWidth": 3.4, "Species": "setosa" }, { "PetalLength": 1.6, "PetalWidth": 0.2, "SepalLength": 5.0, "SepalWidth": 3.0, "Species": "setosa" }, { "PetalLength": 1.6, "PetalWidth": 0.4, "SepalLength": 5.0, "SepalWidth": 3.4, "Species": "setosa" }, { "PetalLength": 1.5, "PetalWidth": 0.2, "SepalLength": 5.2, "SepalWidth": 3.5, "Species": "setosa" }, { "PetalLength": 1.4, "PetalWidth": 0.2, "SepalLength": 5.2, "SepalWidth": 3.4, "Species": "setosa" }, { "PetalLength": 1.6, "PetalWidth": 0.2, "SepalLength": 4.7, "SepalWidth": 3.2, "Species": "setosa" }, { "PetalLength": 1.6, "PetalWidth": 0.2, "SepalLength": 4.8, "SepalWidth": 3.1, "Species": "setosa" }, { "PetalLength": 1.5, "PetalWidth": 0.4, "SepalLength": 5.4, "SepalWidth": 3.4, "Species": "setosa" }, { "PetalLength": 1.5, "PetalWidth": 0.1, "SepalLength": 5.2, "SepalWidth": 4.1, "Species": "setosa" }, { "PetalLength": 1.4, "PetalWidth": 0.2, "SepalLength": 5.5, "SepalWidth": 4.2, "Species": "setosa" }, { "PetalLength": 1.5, "PetalWidth": 0.2, "SepalLength": 4.9, "SepalWidth": 3.1, "Species": "setosa" }, { "PetalLength": 1.2, "PetalWidth": 0.2, "SepalLength": 5.0, "SepalWidth": 3.2, "Species": "setosa" }, { "PetalLength": 1.3, "PetalWidth": 0.2, "SepalLength": 5.5, "SepalWidth": 3.5, "Species": "setosa" }, { "PetalLength": 1.4, "PetalWidth": 0.1, "SepalLength": 4.9, "SepalWidth": 3.6, "Species": "setosa" }, { "PetalLength": 1.3, "PetalWidth": 0.2, "SepalLength": 4.4, "SepalWidth": 3.0, "Species": "setosa" }, { "PetalLength": 1.5, "PetalWidth": 0.2, "SepalLength": 5.1, "SepalWidth": 3.4, "Species": "setosa" }, { "PetalLength": 1.3, "PetalWidth": 0.3, "SepalLength": 5.0, "SepalWidth": 3.5, "Species": "setosa" }, { "PetalLength": 1.3, "PetalWidth": 0.3, "SepalLength": 4.5, "SepalWidth": 2.3, "Species": "setosa" }, { "PetalLength": 1.3, "PetalWidth": 0.2, "SepalLength": 4.4, "SepalWidth": 3.2, "Species": "setosa" }, { "PetalLength": 1.6, "PetalWidth": 0.6, "SepalLength": 5.0, "SepalWidth": 3.5, "Species": "setosa" }, { "PetalLength": 1.9, "PetalWidth": 0.4, "SepalLength": 5.1, "SepalWidth": 3.8, "Species": "setosa" }, { "PetalLength": 1.4, "PetalWidth": 0.3, "SepalLength": 4.8, "SepalWidth": 3.0, "Species": "setosa" }, { "PetalLength": 1.6, "PetalWidth": 0.2, "SepalLength": 5.1, "SepalWidth": 3.8, "Species": "setosa" }, { "PetalLength": 1.4, "PetalWidth": 0.2, "SepalLength": 4.6, "SepalWidth": 3.2, "Species": "setosa" }, { "PetalLength": 1.5, "PetalWidth": 0.2, "SepalLength": 5.3, "SepalWidth": 3.7, "Species": "setosa" }, { "PetalLength": 1.4, "PetalWidth": 0.2, "SepalLength": 5.0, "SepalWidth": 3.3, "Species": "setosa" }, { "PetalLength": 4.7, "PetalWidth": 1.4, "SepalLength": 7.0, "SepalWidth": 3.2, "Species": "versicolor" }, { "PetalLength": 4.5, "PetalWidth": 1.5, "SepalLength": 6.4, "SepalWidth": 3.2, "Species": "versicolor" }, { "PetalLength": 4.9, "PetalWidth": 1.5, "SepalLength": 6.9, "SepalWidth": 3.1, "Species": "versicolor" }, { "PetalLength": 4.0, "PetalWidth": 1.3, "SepalLength": 5.5, "SepalWidth": 2.3, "Species": "versicolor" }, { "PetalLength": 4.6, "PetalWidth": 1.5, "SepalLength": 6.5, "SepalWidth": 2.8, "Species": "versicolor" }, { "PetalLength": 4.5, "PetalWidth": 1.3, "SepalLength": 5.7, "SepalWidth": 2.8, "Species": "versicolor" }, { "PetalLength": 4.7, "PetalWidth": 1.6, "SepalLength": 6.3, "SepalWidth": 3.3, "Species": "versicolor" }, { "PetalLength": 3.3, "PetalWidth": 1.0, "SepalLength": 4.9, "SepalWidth": 2.4, "Species": "versicolor" }, { "PetalLength": 4.6, "PetalWidth": 1.3, "SepalLength": 6.6, "SepalWidth": 2.9, "Species": "versicolor" }, { "PetalLength": 3.9, "PetalWidth": 1.4, "SepalLength": 5.2, "SepalWidth": 2.7, "Species": "versicolor" }, { "PetalLength": 3.5, "PetalWidth": 1.0, "SepalLength": 5.0, "SepalWidth": 2.0, "Species": "versicolor" }, { "PetalLength": 4.2, "PetalWidth": 1.5, "SepalLength": 5.9, "SepalWidth": 3.0, "Species": "versicolor" }, { "PetalLength": 4.0, "PetalWidth": 1.0, "SepalLength": 6.0, "SepalWidth": 2.2, "Species": "versicolor" }, { "PetalLength": 4.7, "PetalWidth": 1.4, "SepalLength": 6.1, "SepalWidth": 2.9, "Species": "versicolor" }, { "PetalLength": 3.6, "PetalWidth": 1.3, "SepalLength": 5.6, "SepalWidth": 2.9, "Species": "versicolor" }, { "PetalLength": 4.4, "PetalWidth": 1.4, "SepalLength": 6.7, "SepalWidth": 3.1, "Species": "versicolor" }, { "PetalLength": 4.5, "PetalWidth": 1.5, "SepalLength": 5.6, "SepalWidth": 3.0, "Species": "versicolor" }, { "PetalLength": 4.1, "PetalWidth": 1.0, "SepalLength": 5.8, "SepalWidth": 2.7, "Species": "versicolor" }, { "PetalLength": 4.5, "PetalWidth": 1.5, "SepalLength": 6.2, "SepalWidth": 2.2, "Species": "versicolor" }, { "PetalLength": 3.9, "PetalWidth": 1.1, "SepalLength": 5.6, "SepalWidth": 2.5, "Species": "versicolor" }, { "PetalLength": 4.8, "PetalWidth": 1.8, "SepalLength": 5.9, "SepalWidth": 3.2, "Species": "versicolor" }, { "PetalLength": 4.0, "PetalWidth": 1.3, "SepalLength": 6.1, "SepalWidth": 2.8, "Species": "versicolor" }, { "PetalLength": 4.9, "PetalWidth": 1.5, "SepalLength": 6.3, "SepalWidth": 2.5, "Species": "versicolor" }, { "PetalLength": 4.7, "PetalWidth": 1.2, "SepalLength": 6.1, "SepalWidth": 2.8, "Species": "versicolor" }, { "PetalLength": 4.3, "PetalWidth": 1.3, "SepalLength": 6.4, "SepalWidth": 2.9, "Species": "versicolor" }, { "PetalLength": 4.4, "PetalWidth": 1.4, "SepalLength": 6.6, "SepalWidth": 3.0, "Species": "versicolor" }, { "PetalLength": 4.8, "PetalWidth": 1.4, "SepalLength": 6.8, "SepalWidth": 2.8, "Species": "versicolor" }, { "PetalLength": 5.0, "PetalWidth": 1.7, "SepalLength": 6.7, "SepalWidth": 3.0, "Species": "versicolor" }, { "PetalLength": 4.5, "PetalWidth": 1.5, "SepalLength": 6.0, "SepalWidth": 2.9, "Species": "versicolor" }, { "PetalLength": 3.5, "PetalWidth": 1.0, "SepalLength": 5.7, "SepalWidth": 2.6, "Species": "versicolor" }, { "PetalLength": 3.8, "PetalWidth": 1.1, "SepalLength": 5.5, "SepalWidth": 2.4, "Species": "versicolor" }, { "PetalLength": 3.7, "PetalWidth": 1.0, "SepalLength": 5.5, "SepalWidth": 2.4, "Species": "versicolor" }, { "PetalLength": 3.9, "PetalWidth": 1.2, "SepalLength": 5.8, "SepalWidth": 2.7, "Species": "versicolor" }, { "PetalLength": 5.1, "PetalWidth": 1.6, "SepalLength": 6.0, "SepalWidth": 2.7, "Species": "versicolor" }, { "PetalLength": 4.5, "PetalWidth": 1.5, "SepalLength": 5.4, "SepalWidth": 3.0, "Species": "versicolor" }, { "PetalLength": 4.5, "PetalWidth": 1.6, "SepalLength": 6.0, "SepalWidth": 3.4, "Species": "versicolor" }, { "PetalLength": 4.7, "PetalWidth": 1.5, "SepalLength": 6.7, "SepalWidth": 3.1, "Species": "versicolor" }, { "PetalLength": 4.4, "PetalWidth": 1.3, "SepalLength": 6.3, "SepalWidth": 2.3, "Species": "versicolor" }, { "PetalLength": 4.1, "PetalWidth": 1.3, "SepalLength": 5.6, "SepalWidth": 3.0, "Species": "versicolor" }, { "PetalLength": 4.0, "PetalWidth": 1.3, "SepalLength": 5.5, "SepalWidth": 2.5, "Species": "versicolor" }, { "PetalLength": 4.4, "PetalWidth": 1.2, "SepalLength": 5.5, "SepalWidth": 2.6, "Species": "versicolor" }, { "PetalLength": 4.6, "PetalWidth": 1.4, "SepalLength": 6.1, "SepalWidth": 3.0, "Species": "versicolor" }, { "PetalLength": 4.0, "PetalWidth": 1.2, "SepalLength": 5.8, "SepalWidth": 2.6, "Species": "versicolor" }, { "PetalLength": 3.3, "PetalWidth": 1.0, "SepalLength": 5.0, "SepalWidth": 2.3, "Species": "versicolor" }, { "PetalLength": 4.2, "PetalWidth": 1.3, "SepalLength": 5.6, "SepalWidth": 2.7, "Species": "versicolor" }, { "PetalLength": 4.2, "PetalWidth": 1.2, "SepalLength": 5.7, "SepalWidth": 3.0, "Species": "versicolor" }, { "PetalLength": 4.2, "PetalWidth": 1.3, "SepalLength": 5.7, "SepalWidth": 2.9, "Species": "versicolor" }, { "PetalLength": 4.3, "PetalWidth": 1.3, "SepalLength": 6.2, "SepalWidth": 2.9, "Species": "versicolor" }, { "PetalLength": 3.0, "PetalWidth": 1.1, "SepalLength": 5.1, "SepalWidth": 2.5, "Species": "versicolor" }, { "PetalLength": 4.1, "PetalWidth": 1.3, "SepalLength": 5.7, "SepalWidth": 2.8, "Species": "versicolor" }, { "PetalLength": 6.0, "PetalWidth": 2.5, "SepalLength": 6.3, "SepalWidth": 3.3, "Species": "virginica" }, { "PetalLength": 5.1, "PetalWidth": 1.9, "SepalLength": 5.8, "SepalWidth": 2.7, "Species": "virginica" }, { "PetalLength": 5.9, "PetalWidth": 2.1, "SepalLength": 7.1, "SepalWidth": 3.0, "Species": "virginica" }, { "PetalLength": 5.6, "PetalWidth": 1.8, "SepalLength": 6.3, "SepalWidth": 2.9, "Species": "virginica" }, { "PetalLength": 5.8, "PetalWidth": 2.2, "SepalLength": 6.5, "SepalWidth": 3.0, "Species": "virginica" }, { "PetalLength": 6.6, "PetalWidth": 2.1, "SepalLength": 7.6, "SepalWidth": 3.0, "Species": "virginica" }, { "PetalLength": 4.5, "PetalWidth": 1.7, "SepalLength": 4.9, "SepalWidth": 2.5, "Species": "virginica" }, { "PetalLength": 6.3, "PetalWidth": 1.8, "SepalLength": 7.3, "SepalWidth": 2.9, "Species": "virginica" }, { "PetalLength": 5.8, "PetalWidth": 1.8, "SepalLength": 6.7, "SepalWidth": 2.5, "Species": "virginica" }, { "PetalLength": 6.1, "PetalWidth": 2.5, "SepalLength": 7.2, "SepalWidth": 3.6, "Species": "virginica" }, { "PetalLength": 5.1, "PetalWidth": 2.0, "SepalLength": 6.5, "SepalWidth": 3.2, "Species": "virginica" }, { "PetalLength": 5.3, "PetalWidth": 1.9, "SepalLength": 6.4, "SepalWidth": 2.7, "Species": "virginica" }, { "PetalLength": 5.5, "PetalWidth": 2.1, "SepalLength": 6.8, "SepalWidth": 3.0, "Species": "virginica" }, { "PetalLength": 5.0, "PetalWidth": 2.0, "SepalLength": 5.7, "SepalWidth": 2.5, "Species": "virginica" }, { "PetalLength": 5.1, "PetalWidth": 2.4, "SepalLength": 5.8, "SepalWidth": 2.8, "Species": "virginica" }, { "PetalLength": 5.3, "PetalWidth": 2.3, "SepalLength": 6.4, "SepalWidth": 3.2, "Species": "virginica" }, { "PetalLength": 5.5, "PetalWidth": 1.8, "SepalLength": 6.5, "SepalWidth": 3.0, "Species": "virginica" }, { "PetalLength": 6.7, "PetalWidth": 2.2, "SepalLength": 7.7, "SepalWidth": 3.8, "Species": "virginica" }, { "PetalLength": 6.9, "PetalWidth": 2.3, "SepalLength": 7.7, "SepalWidth": 2.6, "Species": "virginica" }, { "PetalLength": 5.0, "PetalWidth": 1.5, "SepalLength": 6.0, "SepalWidth": 2.2, "Species": "virginica" }, { "PetalLength": 5.7, "PetalWidth": 2.3, "SepalLength": 6.9, "SepalWidth": 3.2, "Species": "virginica" }, { "PetalLength": 4.9, "PetalWidth": 2.0, "SepalLength": 5.6, "SepalWidth": 2.8, "Species": "virginica" }, { "PetalLength": 6.7, "PetalWidth": 2.0, "SepalLength": 7.7, "SepalWidth": 2.8, "Species": "virginica" }, { "PetalLength": 4.9, "PetalWidth": 1.8, "SepalLength": 6.3, "SepalWidth": 2.7, "Species": "virginica" }, { "PetalLength": 5.7, "PetalWidth": 2.1, "SepalLength": 6.7, "SepalWidth": 3.3, "Species": "virginica" }, { "PetalLength": 6.0, "PetalWidth": 1.8, "SepalLength": 7.2, "SepalWidth": 3.2, "Species": "virginica" }, { "PetalLength": 4.8, "PetalWidth": 1.8, "SepalLength": 6.2, "SepalWidth": 2.8, "Species": "virginica" }, { "PetalLength": 4.9, "PetalWidth": 1.8, "SepalLength": 6.1, "SepalWidth": 3.0, "Species": "virginica" }, { "PetalLength": 5.6, "PetalWidth": 2.1, "SepalLength": 6.4, "SepalWidth": 2.8, "Species": "virginica" }, { "PetalLength": 5.8, "PetalWidth": 1.6, "SepalLength": 7.2, "SepalWidth": 3.0, "Species": "virginica" }, { "PetalLength": 6.1, "PetalWidth": 1.9, "SepalLength": 7.4, "SepalWidth": 2.8, "Species": "virginica" }, { "PetalLength": 6.4, "PetalWidth": 2.0, "SepalLength": 7.9, "SepalWidth": 3.8, "Species": "virginica" }, { "PetalLength": 5.6, "PetalWidth": 2.2, "SepalLength": 6.4, "SepalWidth": 2.8, "Species": "virginica" }, { "PetalLength": 5.1, "PetalWidth": 1.5, "SepalLength": 6.3, "SepalWidth": 2.8, "Species": "virginica" }, { "PetalLength": 5.6, "PetalWidth": 1.4, "SepalLength": 6.1, "SepalWidth": 2.6, "Species": "virginica" }, { "PetalLength": 6.1, "PetalWidth": 2.3, "SepalLength": 7.7, "SepalWidth": 3.0, "Species": "virginica" }, { "PetalLength": 5.6, "PetalWidth": 2.4, "SepalLength": 6.3, "SepalWidth": 3.4, "Species": "virginica" }, { "PetalLength": 5.5, "PetalWidth": 1.8, "SepalLength": 6.4, "SepalWidth": 3.1, "Species": "virginica" }, { "PetalLength": 4.8, "PetalWidth": 1.8, "SepalLength": 6.0, "SepalWidth": 3.0, "Species": "virginica" }, { "PetalLength": 5.4, "PetalWidth": 2.1, "SepalLength": 6.9, "SepalWidth": 3.1, "Species": "virginica" }, { "PetalLength": 5.6, "PetalWidth": 2.4, "SepalLength": 6.7, "SepalWidth": 3.1, "Species": "virginica" }, { "PetalLength": 5.1, "PetalWidth": 2.3, "SepalLength": 6.9, "SepalWidth": 3.1, "Species": "virginica" }, { "PetalLength": 5.1, "PetalWidth": 1.9, "SepalLength": 5.8, "SepalWidth": 2.7, "Species": "virginica" }, { "PetalLength": 5.9, "PetalWidth": 2.3, "SepalLength": 6.8, "SepalWidth": 3.2, "Species": "virginica" }, { "PetalLength": 5.7, "PetalWidth": 2.5, "SepalLength": 6.7, "SepalWidth": 3.3, "Species": "virginica" }, { "PetalLength": 5.2, "PetalWidth": 2.3, "SepalLength": 6.7, "SepalWidth": 3.0, "Species": "virginica" }, { "PetalLength": 5.0, "PetalWidth": 1.9, "SepalLength": 6.3, "SepalWidth": 2.5, "Species": "virginica" }, { "PetalLength": 5.2, "PetalWidth": 2.0, "SepalLength": 6.5, "SepalWidth": 3.0, "Species": "virginica" }, { "PetalLength": 5.4, "PetalWidth": 2.3, "SepalLength": 6.2, "SepalWidth": 3.4, "Species": "virginica" }, { "PetalLength": 5.1, "PetalWidth": 1.8, "SepalLength": 5.9, "SepalWidth": 3.0, "Species": "virginica" } ] }, "encoding": { "color": { "field": "Species" }, "x": { "field": "PetalLength", "type": "quantitative" }, "y": { "field": "PetalWidth", "type": "quantitative" } }, "mark": "point" }, "image/png": "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", "image/svg+xml": [ "\n", "\n", "01234567PetalLength0.00.51.01.52.02.5PetalWidthsetosaversicolorvirginicaSpecies\n" ], "text/plain": [ "@vlplot(\n", " mark=\"point\",\n", " encoding={\n", " x={\n", " field=\"PetalLength\"\n", " },\n", " y={\n", " field=\"PetalWidth\"\n", " },\n", " color={\n", " field=\"Species\"\n", " }\n", " },\n", " data={\n", " values=...\n", " }\n", ")" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using RDatasets, VegaLite\n", "iris = dataset(\"datasets\", \"iris\")\n", "\n", "iris |> @vlplot(\n", " :point,\n", " x=:PetalLength,\n", " y=:PetalWidth,\n", " color=:Species\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Statistics and Econometrics\n", "\n", "While Julia is not intended as a replacement for R, Stata, and similar specialty languages, it has a growing number of packages aimed at statistics and econometrics.\n", "\n", "Many of the packages live in the [JuliaStats organization](https://github.com/JuliaStats/).\n", "\n", "A few to point out\n", "\n", "- [StatsBase](https://github.com/JuliaStats/StatsBase.jl) has basic statistical functions such as geometric and harmonic means, auto-correlations, robust statistics, etc. \n", "- [StatsFuns](https://github.com/JuliaStats/StatsFuns.jl) has a variety of mathematical functions and constants such as pdf and cdf of many distributions, softmax, etc. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### General Linear Models\n", "\n", "To run linear regressions and similar statistics, use the [GLM](http://juliastats.github.io/GLM.jl/latest/) package." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "hide-output": false }, "outputs": [ { "data": { "text/plain": [ "StatsModels.TableRegressionModel{LinearModel{GLM.LmResp{Array{Float64,1}},GLM.DensePredChol{Float64,Cholesky{Float64,Array{Float64,2}}}},Array{Float64,2}}\n", "\n", "y ~ 1 + x\n", "\n", "Coefficients:\n", "──────────────────────────────────────────────────────────────────────────\n", " Estimate Std. Error t value Pr(>|t|) Lower 95% Upper 95%\n", "──────────────────────────────────────────────────────────────────────────\n", "(Intercept) 0.239083 0.0149413 16.0015 <1e-28 0.209432 0.268733\n", "x 0.910987 0.0149344 60.9993 <1e-79 0.88135 0.940624\n", "──────────────────────────────────────────────────────────────────────────" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using GLM\n", "\n", "x = randn(100)\n", "y = 0.9 .* x + 0.5 * rand(100)\n", "df = DataFrame(x=x, y=y)\n", "ols = lm(@formula(y ~ x), df) # R-style notation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To display the results in a useful tables for LaTeX and the REPL, use\n", "[RegressionTables](https://github.com/jmboehm/RegressionTables.jl/) for output\n", "similar to the Stata package esttab and the R package stargazer." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "----------------------\n", " y \n", " --------\n", " (1)\n", "----------------------\n", "(Intercept) 0.239***\n", " (0.015)\n", "x 0.911***\n", " (0.015)\n", "----------------------\n", "Estimator OLS\n", "----------------------\n", "N 100\n", "R2 0.974\n", "----------------------\n", "\n", "\n" ] } ], "source": [ "using RegressionTables\n", "regtable(ols)\n", "# regtable(ols, renderSettings = latexOutput()) # for LaTex output" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fixed Effects\n", "\n", "While Julia may be overkill for estimating a simple linear regression,\n", "fixed-effects estimation with dummies for multiple variables are much more computationally intensive.\n", "\n", "For a 2-way fixed-effect, taking the example directly from the documentation using [cigarette consumption data](https://github.com/johnmyleswhite/RDatasets.jl/blob/master/doc/plm/rst/Cigar.rst)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "hide-output": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "----------------------------\n", " Sales \n", " ---------\n", " (1)\n", "----------------------------\n", "NDI -0.005***\n", " (0.001)\n", "----------------------------\n", "StateCategorical Yes\n", "YearCategorical Yes\n", "----------------------------\n", "Estimator OLS\n", "----------------------------\n", "N 1,380\n", "R2 0.803\n", "----------------------------\n", "\n", "\n" ] } ], "source": [ "using FixedEffectModels\n", "cigar = dataset(\"plm\", \"Cigar\")\n", "cigar.StateCategorical = categorical(cigar.State)\n", "cigar.YearCategorical = categorical(cigar.Year)\n", "fixedeffectresults = reg(cigar, @formula(Sales ~ NDI + fe(StateCategorical) + fe(YearCategorical)),\n", " weights = :Pop, Vcov.cluster(:State))\n", "regtable(fixedeffectresults)" ] } ], "metadata": { "date": 1591310622.499557, "download_nb": 1, "download_nb_path": "https://julia.quantecon.org/", "filename": "data_statistical_packages.rst", "filename_with_path": "more_julia/data_statistical_packages", "kernelspec": { "display_name": "Julia 1.4.2", "language": "julia", "name": "julia-1.4" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.4.2" }, "title": "Data and Statistics Packages" }, "nbformat": 4, "nbformat_minor": 2 }