diff --git a/.gitignore b/.gitignore index 56d8131..957c762 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ -commands.txt -stata.tar.gz -.ipynb_checkpoints/ +util/ +.ipynb_checkpoints/ \ No newline at end of file diff --git a/README.md b/README.md index 4900645..7e8010b 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,16 @@ -# Usage +# ⚠️ Disclaimer +This is an unofficial repository to run Stata using Docker. You must have the license code. Otherwise, you can't execute Stata both on batch mode or via Jupyter because the `stata.lic` file is not attached in the Docker images. + +# Images +There are two images, one only consists of Stata, the other one has Jupyter and LaTeX installed. To see my Docker repositories, visit [here](https://hub.docker.com/u/ledwindra). Use the following Docker commands to pull the images: ```bash -# replace all values -# only executed once -docker build -t stata "https://github.com/ledwindra/docker-stata.git#main" \ - --build-arg URL="URL TO YOUR STATA INSTALLER" \ - --build-arg SERIAL="STATA SERIAL NUMBER" \ - --build-arg CODE="STATA CODE" \ - --build-arg AUTHORIZATION="STATA AUTHORIZATION" \ - --build-arg FIRST="FIRST NAME" \ - --build-arg LAST="LAST NAME" - -# run jupyter and copy tokens if needed -# unless you delete the container (stata), you only need to execute the following command -docker run -p 8888:8888 --name=stata stata:latest +# only Stata—1.29 GB +docker pull ledwindra/base-stata:latest -# check whether stata container is active -docker ps -a -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -2d70f687536f stata:latest "tini -g -- jupyter …" 4 minutes ago Up 4 minutes 0.0.0.0:8888->8888/tcp, :::8888->8888/tcp stata +# with Jupyter and LaTeX— GB +docker pull ledwindra/jupyter-stata:latest ``` -# Token -image - -# Change configuration file -By default, `stata_kernel` assumes your Stata is MP edition. You need to change its configuration file if you have another edition (IC or SE) by using terminal inside Jupyter. Then type `vim ~/.stata_kernel.conf`. - -image - -Change `stata_path = /usr/local/stata/stata-mp` to be `/usr/local/stata/` (IC) or `/usr/local/stata/stata-se` (SE). - -image - - - - - +# Too lazy to install Docker? +No worries, you can execute this via [GitHub Codespaces](https://docs.github.com/en/codespaces/overview) for both public and private repositories. Its default setup has Docker installed. Understanding Docker commands may be helpful, though you can just copy and paste my snippets above. \ No newline at end of file diff --git a/base-stata/Dockerfile b/base-stata/Dockerfile new file mode 100644 index 0000000..7ea3cec --- /dev/null +++ b/base-stata/Dockerfile @@ -0,0 +1,30 @@ +# initial setup +FROM ubuntu:latest AS stata +ARG DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get install -y wget + +# install stata +COPY stata.tar.gz /home/stata.tar.gz +RUN cd /tmp/ && \ + mkdir -p statafiles && \ + cd statafiles && \ + tar -zxf /home/stata.tar.gz && \ + cd /usr/local && \ + mkdir -p stata && \ + cd stata && \ + yes | /tmp/statafiles/install + +RUN apt-get update && \ + apt-get install -y autoconf automake build-essential git libncurses5 libtool make pkg-config tcsh vim zlib1g-dev && \ + wget http://archive.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng_1.2.54.orig.tar.xz && \ + tar xvf libpng_1.2.54.orig.tar.xz && \ + cd libpng-1.2.54 && \ + ./autogen.sh && \ + ./configure && \ + make -j8 && \ + make install && \ + ldconfig + +ENV PATH="/usr/local/stata:$PATH" +RUN mkdir -p /home/stata +WORKDIR /home/stata diff --git a/base-stata/README.md b/base-stata/README.md new file mode 100644 index 0000000..4639393 --- /dev/null +++ b/base-stata/README.md @@ -0,0 +1,28 @@ +# Usage + +You can build the image locally on your own. First, you must have Stata installer in `.tar.gz` format and save it in this directory `(./base-stata/)` + +```bash +# build image locally +docker build -t base-stata . + +# run image +docker run -d -it --name=base-stata base-stata:latest +docker exec -it base-stata bash + +# remove container if no longer needed +docker rm -f base-stata +``` + +To run Stata, you need to create `stata.lic` file inside `/usr/local/stata/` directory. Otherwise, you will get the following error message when you prompt Stata batch mode: + +``` +Cannot find license file +stata.lic +``` + +By default, I only install `vim` text editor. So type the following command `vim /usr/local/stata/stata.lic` and paste the following values: + +``` +SERIAL!AUTHORIZATION!CODE!FIRST NAME!LAST NAME!FOUR DIGITS FROM LICENSE! +``` \ No newline at end of file diff --git a/example.ipynb b/example.ipynb deleted file mode 100644 index 05d7030..0000000 --- a/example.ipynb +++ /dev/null @@ -1,501 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "c581b428", - "metadata": {}, - "outputs": [], - "source": [ - "set more off" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c5d1aa5e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(1978 Automobile Data)\n" - ] - } - ], - "source": [ - "sysuse auto" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "346f04e6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "--------------------------------------------------------------------------------\n", - "make Make and Model\n", - "--------------------------------------------------------------------------------\n", - "\n", - " type: string (str18), but longest is str17\n", - "\n", - " unique values: 74 missing \"\": 0/74\n", - "\n", - " examples: \"Cad. Deville\"\n", - " \"Dodge Magnum\"\n", - " \"Merc. XR-7\"\n", - " \"Pont. Catalina\"\n", - "\n", - " warning: variable has embedded blanks\n", - "\n", - "--------------------------------------------------------------------------------\n", - "price Price\n", - "--------------------------------------------------------------------------------\n", - "\n", - " type: numeric (int)\n", - "\n", - " range: [3291,15906] units: 1\n", - " unique values: 74 missing .: 0/74\n", - "\n", - " mean: 6165.26\n", - " std. dev: 2949.5\n", - "\n", - " percentiles: 10% 25% 50% 75% 90%\n", - " 3895 4195 5006.5 6342 11385\n", - "\n", - "--------------------------------------------------------------------------------\n", - "mpg Mileage (mpg)\n", - "--------------------------------------------------------------------------------\n", - "\n", - " type: numeric (int)\n", - "\n", - " range: [12,41] units: 1\n", - " unique values: 21 missing .: 0/74\n", - "\n", - " mean: 21.2973\n", - " std. dev: 5.7855\n", - "\n", - " percentiles: 10% 25% 50% 75% 90%\n", - " 14 18 20 25 29\n", - "\n", - "--------------------------------------------------------------------------------\n", - "rep78 Repair Record 1978\n", - "--------------------------------------------------------------------------------\n", - "\n", - " type: numeric (int)\n", - "\n", - " range: [1,5] units: 1\n", - " unique values: 5 missing .: 5/74\n", - "\n", - " tabulation: Freq. Value\n", - " 2 1\n", - " 8 2\n", - " 30 3\n", - " 18 4\n", - " 11 5\n", - " 5 .\n", - "\n", - "--------------------------------------------------------------------------------\n", - "headroom Headroom (in.)\n", - "--------------------------------------------------------------------------------\n", - "\n", - " type: numeric (float)\n", - "\n", - " range: [1.5,5] units: .1\n", - " unique values: 8 missing .: 0/74\n", - "\n", - " tabulation: Freq. Value\n", - " 4 1.5\n", - " 13 2\n", - " 14 2.5\n", - " 13 3\n", - " 15 3.5\n", - " 10 4\n", - " 4 4.5\n", - " 1 5\n", - "\n", - "--------------------------------------------------------------------------------\n", - "trunk Trunk space (cu. ft.)\n", - "--------------------------------------------------------------------------------\n", - "\n", - " type: numeric (int)\n", - "\n", - " range: [5,23] units: 1\n", - " unique values: 18 missing .: 0/74\n", - "\n", - " mean: 13.7568\n", - " std. dev: 4.2774\n", - "\n", - " percentiles: 10% 25% 50% 75% 90%\n", - " 8 10 14 17 20\n", - "\n", - "--------------------------------------------------------------------------------\n", - "weight Weight (lbs.)\n", - "--------------------------------------------------------------------------------\n", - "\n", - " type: numeric (int)\n", - "\n", - " range: [1760,4840] units: 10\n", - " unique values: 64 missing .: 0/74\n", - "\n", - " mean: 3019.46\n", - " std. dev: 777.194\n", - "\n", - " percentiles: 10% 25% 50% 75% 90%\n", - " 2020 2240 3190 3600 4060\n", - "\n", - "--------------------------------------------------------------------------------\n", - "length Length (in.)\n", - "--------------------------------------------------------------------------------\n", - "\n", - " type: numeric (int)\n", - "\n", - " range: [142,233] units: 1\n", - " unique values: 47 missing .: 0/74\n", - "\n", - " mean: 187.932\n", - " std. dev: 22.2663\n", - "\n", - " percentiles: 10% 25% 50% 75% 90%\n", - " 157 170 192.5 204 218\n", - "\n", - "--------------------------------------------------------------------------------\n", - "turn Turn Circle (ft.) \n", - "--------------------------------------------------------------------------------\n", - "\n", - " type: numeric (int)\n", - "\n", - " range: [31,51] units: 1\n", - " unique values: 18 missing .: 0/74\n", - "\n", - " mean: 39.6486\n", - " std. dev: 4.39935\n", - "\n", - " percentiles: 10% 25% 50% 75% 90%\n", - " 34 36 40 43 45\n", - "\n", - "--------------------------------------------------------------------------------\n", - "displacement Displacement (cu. in.)\n", - "--------------------------------------------------------------------------------\n", - "\n", - " type: numeric (int)\n", - "\n", - " range: [79,425] units: 1\n", - " unique values: 31 missing .: 0/74\n", - "\n", - " mean: 197.297\n", - " std. dev: 91.8372\n", - "\n", - " percentiles: 10% 25% 50% 75% 90%\n", - " 97 119 196 250 350\n", - "\n", - "--------------------------------------------------------------------------------\n", - "gear_ratio Gear Ratio\n", - "--------------------------------------------------------------------------------\n", - "\n", - " type: numeric (float)\n", - "\n", - " range: [2.19,3.89] units: .01\n", - " unique values: 36 missing .: 0/74\n", - "\n", - " mean: 3.01486\n", - " std. dev: .456287\n", - "\n", - " percentiles: 10% 25% 50% 75% 90%\n", - " 2.43 2.73 2.955 3.37 3.72\n", - "\n", - "--------------------------------------------------------------------------------\n", - "foreign Car type\n", - "--------------------------------------------------------------------------------\n", - "\n", - " type: numeric (byte)\n", - " label: origin\n", - "\n", - " range: [0,1] units: 1\n", - " unique values: 2 missing .: 0/74\n", - "\n", - " tabulation: Freq. Numeric Label\n", - " 52 0 Domestic\n", - " 22 1 Foreign\n" - ] - } - ], - "source": [ - "codebook" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "2b1989db", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - " Variable | Obs Mean Std. Dev. Min Max\n", - "-------------+---------------------------------------------------------\n", - " make | 0\n", - " price | 74 6165.257 2949.496 3291 15906\n", - " mpg | 74 21.2973 5.785503 12 41\n", - " rep78 | 69 3.405797 .9899323 1 5\n", - " headroom | 74 2.993243 .8459948 1.5 5\n", - "-------------+---------------------------------------------------------\n", - " trunk | 74 13.75676 4.277404 5 23\n", - " weight | 74 3019.459 777.1936 1760 4840\n", - " length | 74 187.9324 22.26634 142 233\n", - " turn | 74 39.64865 4.399354 31 51\n", - "displacement | 74 197.2973 91.83722 79 425\n", - "-------------+---------------------------------------------------------\n", - " gear_ratio | 74 3.014865 .4562871 2.19 3.89\n", - " foreign | 74 .2972973 .4601885 0 1\n" - ] - } - ], - "source": [ - "summarize" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "f018d125", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(bin=30, start=3291, width=420.5)\n" - ] - }, - { - "data": { - "application/pdf": "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", - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\tStata Graph - Graph\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t0\n", - "\t\n", - "\t1.0e-04\n", - "\t\n", - "\t2.0e-04\n", - "\t\n", - "\t3.0e-04\n", - "\t\n", - "\t4.0e-04\n", - "\tDensity\n", - "\t\n", - "\t\n", - "\t0\n", - "\t\n", - "\t5,000\n", - "\t\n", - "\t10,000\n", - "\t\n", - "\t15,000\n", - "\tPrice\n", - "\n" - ], - "text/html": [ - " \n" - ], - "text/plain": [ - "This front-end cannot display the desired image type." - ] - }, - "metadata": { - "image/svg+xml": { - "height": 436, - "width": 600 - }, - "text/html": { - "height": 436, - "width": 600 - } - }, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "histogram price, bin(30)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "302d69c9", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Stata", - "language": "stata", - "name": "stata" - }, - "language_info": { - "codemirror_mode": "stata", - "file_extension": ".do", - "mimetype": "text/x-stata", - "name": "stata", - "version": "15.1" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/Dockerfile b/jupyter-stata/Dockerfile similarity index 65% rename from Dockerfile rename to jupyter-stata/Dockerfile index 4065ea9..5b29601 100644 --- a/Dockerfile +++ b/jupyter-stata/Dockerfile @@ -1,28 +1,10 @@ # initial setup -FROM ubuntu:latest +FROM ubuntu:latest AS stata ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y wget -# you need to have a stata installer named stata.tar.gz on your machine -# URL can be from Dropbox -ARG URL -ENV URL=${URL} -RUN wget -O /home/stata.tar.gz ${URL} - -# passing environment variables to input stata prompts -ARG SERIAL -ARG CODE -ARG AUTHORIZATION -ARG FIRST -ARG LAST - -ENV SERIAL=${SERIAL} -ENV CODE=${CODE} -ENV AUTHORIZATION=${AUTHORIZATION} -ENV FIRST=${FIRST} -ENV LAST=${LAST} - # install stata +COPY stata.tar.gz /home/stata.tar.gz RUN cd /tmp/ && \ mkdir -p statafiles && \ cd statafiles && \ @@ -30,8 +12,7 @@ RUN cd /tmp/ && \ cd /usr/local && \ mkdir -p stata && \ cd stata && \ - yes | /tmp/statafiles/install && \ - echo "Y\nY\n${SERIAL}\n${CODE}\n${AUTHORIZATION}\nY\nY\n${FIRST}\n${LAST}\nY" | ./stinit + yes | /tmp/statafiles/install # setup stata kernel FROM jupyter/base-notebook:latest @@ -47,7 +28,7 @@ RUN apt-get update && \ make install && \ ldconfig RUN apt-get install -y texlive-xetex texlive-fonts-recommended texlive-latex-recommended -COPY --from=0 /usr/local/stata /usr/local/stata +COPY --from=stata /usr/local/stata /usr/local/stata ENV PATH="/usr/local/stata:$PATH" RUN pip install stata_kernel && python -m stata_kernel.install RUN chmod +x ~/.stata_kernel.conf diff --git a/jupyter-stata/README.md b/jupyter-stata/README.md new file mode 100644 index 0000000..16e88be --- /dev/null +++ b/jupyter-stata/README.md @@ -0,0 +1,31 @@ +# Usage + +You can build the image locally on your own. First, you must have Stata installer in `.tar.gz` format and save it in this directory `(./jupyter-stata/)` + +```bash +# build image locally +docker build -t jupyter-stata . + +# run image +# after running this command, copy and paste the notebook token +docker run -p 8888:8888 --name=jupyter-stata jupyter-stata:latest + +# remove container if no longer needed +docker rm -f jupyter-stata +``` + +To run Stata, you need to create `stata.lic` file inside `/usr/local/stata/` directory. Otherwise, you will get the following error message when you prompt Stata batch mode: + +``` +Cannot find license file +stata.lic +``` + +By default, I only install `vim` text editor. So type the following command `vim /usr/local/stata/stata.lic` and paste the following values: + +``` +SERIAL!AUTHORIZATION!CODE!FIRST NAME!LAST NAME!FOUR DIGITS FROM LICENSE! +``` + +# Jupyter +The backbone of running Stata on Jupyter is [`stata_kernel`](https://github.com/kylebarron/stata_kernel) library. However, it assumes that your default stata edition is `MP`. If you use Stata `IC` or `SE`, you need to change its configuration file by typing `vim ~/.stata_kernel.conf`. Find `stata_path` and replace its value to `/usr/local/stata/stata` or `/usr/local/stata/stata-se`. \ No newline at end of file diff --git a/life-exp.ipynb b/life-exp.ipynb deleted file mode 100644 index 7a976d2..0000000 --- a/life-exp.ipynb +++ /dev/null @@ -1,666 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "3528a9d0", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(Life expectancy, 1998)\n" - ] - } - ], - "source": [ - "sysuse lifeexp, clear" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "3004856c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
regioncountrypopgrowthlexpgnppcsafewater
1Eur & C.AsiaAlbania1.27281076
2Eur & C.AsiaArmenia1.174460.
3Eur & C.AsiaAustria.400000017926830.
4Eur & C.AsiaAzerbaijan1.471480.
5Eur & C.AsiaBelarus.30000001682180.
6Eur & C.AsiaBelgium.27825380.
7Eur & C.AsiaBosnia and Herzegovina-.573..
8Eur & C.AsiaBulgaria-.40000001711220.
9Eur & C.AsiaCroatia-.173462063
10Eur & C.AsiaCzech Republic0755150.
\n", - "
" - ], - "text/plain": [ - "\n", - " +-----------------------------------------------------------------+\n", - " 1. | region | country | popgro~h | lexp | gnppc |\n", - " | Eur & C.Asia | Albania | 1.2 | 72 | 810 |\n", - " |-----------------------------------------------------------------|\n", - " | safewa~r |\n", - " | 76 |\n", - " +-----------------------------------------------------------------+\n", - "\n", - " +-----------------------------------------------------------------+\n", - " 2. | region | country | popgro~h | lexp | gnppc |\n", - " | Eur & C.Asia | Armenia | 1.1 | 74 | 460 |\n", - " |-----------------------------------------------------------------|\n", - " | safewa~r |\n", - " | . |\n", - " +-----------------------------------------------------------------+\n", - "\n", - " +-----------------------------------------------------------------+\n", - " 3. | region | country | popgro~h | lexp | gnppc |\n", - " | Eur & C.Asia | Austria | .4 | 79 | 26830 |\n", - " |-----------------------------------------------------------------|\n", - " | safewa~r |\n", - " | . |\n", - " +-----------------------------------------------------------------+\n", - "\n", - " +-----------------------------------------------------------------+\n", - " 4. | region | country | popgro~h | lexp | gnppc |\n", - " | Eur & C.Asia | Azerbaijan | 1.4 | 71 | 480 |\n", - " |-----------------------------------------------------------------|\n", - " | safewa~r |\n", - " | . |\n", - " +-----------------------------------------------------------------+\n", - "\n", - " +-----------------------------------------------------------------+\n", - " 5. | region | country | popgro~h | lexp | gnppc |\n", - " | Eur & C.Asia | Belarus | .3 | 68 | 2180 |\n", - " |-----------------------------------------------------------------|\n", - " | safewa~r |\n", - " | . |\n", - " +-----------------------------------------------------------------+\n", - "\n", - " +-----------------------------------------------------------------+\n", - " 6. | region | country | popgro~h | lexp | gnppc |\n", - " | Eur & C.Asia | Belgium | .2 | 78 | 25380 |\n", - " |-----------------------------------------------------------------|\n", - " | safewa~r |\n", - " | . |\n", - " +-----------------------------------------------------------------+\n", - "\n", - " +-----------------------------------------------------------------+\n", - " 7. | region | country | popgro~h | lexp | gnppc |\n", - " | Eur & C.Asia | Bosnia and Herzegovina | -.5 | 73 | . |\n", - " |-----------------------------------------------------------------|\n", - " | safewa~r |\n", - " | . |\n", - " +-----------------------------------------------------------------+\n", - "\n", - " +-----------------------------------------------------------------+\n", - " 8. | region | country | popgro~h | lexp | gnppc |\n", - " | Eur & C.Asia | Bulgaria | -.4 | 71 | 1220 |\n", - " |-----------------------------------------------------------------|\n", - " | safewa~r |\n", - " | . |\n", - " +-----------------------------------------------------------------+\n", - "\n", - " +-----------------------------------------------------------------+\n", - " 9. | region | country | popgro~h | lexp | gnppc |\n", - " | Eur & C.Asia | Croatia | -.1 | 73 | 4620 |\n", - " |-----------------------------------------------------------------|\n", - " | safewa~r |\n", - " | 63 |\n", - " +-----------------------------------------------------------------+\n", - "\n", - " +-----------------------------------------------------------------+\n", - " 10. | region | country | popgro~h | lexp | gnppc |\n", - " | Eur & C.Asia | Czech Republic | 0 | 75 | 5150 |\n", - " |-----------------------------------------------------------------|\n", - " | safewa~r |\n", - " | . |\n", - " +-----------------------------------------------------------------+\n", - "\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%head" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "8121e436", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - " Region | Freq. Percent Cum.\n", - "-------------+-----------------------------------\n", - "Eur & C.Asia | 44 64.71 64.71\n", - " N.A. | 14 20.59 85.29\n", - " S.A. | 10 14.71 100.00\n", - "-------------+-----------------------------------\n", - " Total | 68 100.00\n" - ] - } - ], - "source": [ - "tabulate region" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "8809950f", - "metadata": {}, - "outputs": [ - { - "data": { - "application/pdf": "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", - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\tStata Graph - Graph\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t55\n", - "\t\n", - "\t60\n", - "\t\n", - "\t65\n", - "\t\n", - "\t70\n", - "\t\n", - "\t75\n", - "\t\n", - "\t80\n", - "\tLife expectancy at birth\n", - "\t\n", - "\t\n", - "\t0\n", - "\t\n", - "\t10000\n", - "\t\n", - "\t20000\n", - "\t\n", - "\t30000\n", - "\t\n", - "\t40000\n", - "\tGNP per capita\n", - "\n" - ], - "text/html": [ - " \n" - ], - "text/plain": [ - "This front-end cannot display the desired image type." - ] - }, - "metadata": { - "image/svg+xml": { - "height": 436, - "width": 600 - }, - "text/html": { - "height": 436, - "width": 600 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "scatter lexp gnppc" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "dd36d7e7", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Stata", - "language": "stata", - "name": "stata" - }, - "language_info": { - "codemirror_mode": "stata", - "file_extension": ".do", - "mimetype": "text/x-stata", - "name": "stata", - "version": "15.1" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/life-exp.md b/life-exp.md deleted file mode 100644 index 2c6eb61..0000000 --- a/life-exp.md +++ /dev/null @@ -1,333 +0,0 @@ -```stata -sysuse lifeexp, clear -``` - - (Life expectancy, 1998) - - - -```stata -%head -``` - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
regioncountrypopgrowthlexpgnppcsafewater
1Eur & C.AsiaAlbania1.27281076
2Eur & C.AsiaArmenia1.174460.
3Eur & C.AsiaAustria.400000017926830.
4Eur & C.AsiaAzerbaijan1.471480.
5Eur & C.AsiaBelarus.30000001682180.
6Eur & C.AsiaBelgium.27825380.
7Eur & C.AsiaBosnia and Herzegovina-.573..
8Eur & C.AsiaBulgaria-.40000001711220.
9Eur & C.AsiaCroatia-.173462063
10Eur & C.AsiaCzech Republic0755150.
-
- - - -```stata -tabulate region -``` - - - Region | Freq. Percent Cum. - -------------+----------------------------------- - Eur & C.Asia | 44 64.71 64.71 - N.A. | 14 20.59 85.29 - S.A. | 10 14.71 100.00 - -------------+----------------------------------- - Total | 68 100.00 - - - -```stata -scatter lexp gnppc -``` - - - - - - - -```stata - -``` diff --git a/life-exp.pdf b/life-exp.pdf deleted file mode 100644 index ced11af..0000000 Binary files a/life-exp.pdf and /dev/null differ diff --git a/life-exp_files/life-exp_3_0.pdf b/life-exp_files/life-exp_3_0.pdf deleted file mode 100644 index 1061023..0000000 Binary files a/life-exp_files/life-exp_3_0.pdf and /dev/null differ diff --git a/life-exp_files/life-exp_3_0.svg b/life-exp_files/life-exp_3_0.svg deleted file mode 100644 index 9ddc4b8..0000000 --- a/life-exp_files/life-exp_3_0.svg +++ /dev/null @@ -1,169 +0,0 @@ - - - - - Stata Graph - Graph - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 55 - - 60 - - 65 - - 70 - - 75 - - 80 - Life expectancy at birth - - - 0 - - 10000 - - 20000 - - 30000 - - 40000 - GNP per capita -