!pip install -r requirements.txt
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import statsmodels.api as sm
import seaborn as sns
from sklearn.linear_model import LinearRegression
from IPython.display import display
iris = sns.load_dataset('iris')
Collecting statsmodels==0.12.2
Downloading statsmodels-0.12.2-cp37-cp37m-manylinux1_x86_64.whl (9.5 MB)
|████████████████████████████████| 9.5 MB 36.3 MB/s
Collecting ipywidgets==7.6.5
Downloading ipywidgets-7.6.5-py2.py3-none-any.whl (121 kB)
|████████████████████████████████| 121 kB 56.1 MB/s
Requirement already satisfied: pandas>=0.21 in /shared-libs/python3.7/py/lib/python3.7/site-packages (from statsmodels==0.12.2->-r requirements.txt (line 1)) (1.2.5)
Requirement already satisfied: scipy>=1.1 in /shared-libs/python3.7/py/lib/python3.7/site-packages (from statsmodels==0.12.2->-r requirements.txt (line 1)) (1.7.1)
Collecting patsy>=0.5
Downloading patsy-0.5.2-py2.py3-none-any.whl (233 kB)
|████████████████████████████████| 233 kB 52.3 MB/s
Requirement already satisfied: numpy>=1.15 in /shared-libs/python3.7/py/lib/python3.7/site-packages (from statsmodels==0.12.2->-r requirements.txt (line 1)) (1.19.5)
Requirement already satisfied: ipython-genutils~=0.2.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.2.0)
Requirement already satisfied: ipython>=4.0.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipywidgets==7.6.5->-r requirements.txt (line 2)) (7.28.0)
Collecting jupyterlab-widgets>=1.0.0
Downloading jupyterlab_widgets-1.0.2-py3-none-any.whl (243 kB)
|████████████████████████████████| 243 kB 48.8 MB/s
Collecting widgetsnbextension~=3.5.0
Downloading widgetsnbextension-3.5.1-py2.py3-none-any.whl (2.2 MB)
|████████████████████████████████| 2.2 MB 35.6 MB/s
Requirement already satisfied: nbformat>=4.2.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipywidgets==7.6.5->-r requirements.txt (line 2)) (5.1.3)
Requirement already satisfied: ipykernel>=4.5.1 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipywidgets==7.6.5->-r requirements.txt (line 2)) (6.3.1)
Requirement already satisfied: traitlets>=4.3.1 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipywidgets==7.6.5->-r requirements.txt (line 2)) (5.1.0)
Requirement already satisfied: argcomplete>=1.12.3 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipykernel>=4.5.1->ipywidgets==7.6.5->-r requirements.txt (line 2)) (1.12.3)
Requirement already satisfied: tornado<7.0,>=4.2 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipykernel>=4.5.1->ipywidgets==7.6.5->-r requirements.txt (line 2)) (6.1)
Requirement already satisfied: matplotlib-inline<0.2.0,>=0.1.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipykernel>=4.5.1->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.1.3)
Requirement already satisfied: debugpy<2.0,>=1.0.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipykernel>=4.5.1->ipywidgets==7.6.5->-r requirements.txt (line 2)) (1.4.3)
Requirement already satisfied: jupyter-client<8.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipykernel>=4.5.1->ipywidgets==7.6.5->-r requirements.txt (line 2)) (7.0.3)
Requirement already satisfied: importlib-metadata<5 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipykernel>=4.5.1->ipywidgets==7.6.5->-r requirements.txt (line 2)) (4.8.1)
Requirement already satisfied: typing-extensions>=3.6.4 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from importlib-metadata<5->ipykernel>=4.5.1->ipywidgets==7.6.5->-r requirements.txt (line 2)) (3.10.0.2)
Requirement already satisfied: zipp>=0.5 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from importlib-metadata<5->ipykernel>=4.5.1->ipywidgets==7.6.5->-r requirements.txt (line 2)) (3.5.0)
Requirement already satisfied: setuptools>=18.5 in /root/venv/lib/python3.7/site-packages (from ipython>=4.0.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (58.1.0)
Requirement already satisfied: pickleshare in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipython>=4.0.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.7.5)
Requirement already satisfied: decorator in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipython>=4.0.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (5.1.0)
Requirement already satisfied: pexpect>4.3 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipython>=4.0.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (4.8.0)
Requirement already satisfied: pygments in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipython>=4.0.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (2.10.0)
Requirement already satisfied: jedi>=0.16 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipython>=4.0.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.17.2)
Requirement already satisfied: backcall in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipython>=4.0.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.2.0)
Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from ipython>=4.0.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (3.0.20)
Requirement already satisfied: parso<0.8.0,>=0.7.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from jedi>=0.16->ipython>=4.0.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.7.1)
Requirement already satisfied: pyzmq>=13 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from jupyter-client<8.0->ipykernel>=4.5.1->ipywidgets==7.6.5->-r requirements.txt (line 2)) (22.3.0)
Requirement already satisfied: nest-asyncio>=1.5 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from jupyter-client<8.0->ipykernel>=4.5.1->ipywidgets==7.6.5->-r requirements.txt (line 2)) (1.5.1)
Requirement already satisfied: python-dateutil>=2.1 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from jupyter-client<8.0->ipykernel>=4.5.1->ipywidgets==7.6.5->-r requirements.txt (line 2)) (2.8.2)
Requirement already satisfied: entrypoints in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from jupyter-client<8.0->ipykernel>=4.5.1->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.3)
Requirement already satisfied: jupyter-core>=4.6.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from jupyter-client<8.0->ipykernel>=4.5.1->ipywidgets==7.6.5->-r requirements.txt (line 2)) (4.8.1)
Requirement already satisfied: jsonschema!=2.5.0,>=2.4 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from nbformat>=4.2.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (3.2.0)
Requirement already satisfied: attrs>=17.4.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (21.2.0)
Requirement already satisfied: six>=1.11.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (1.16.0)
Requirement already satisfied: pyrsistent>=0.14.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.18.0)
Requirement already satisfied: pytz>=2017.3 in /shared-libs/python3.7/py/lib/python3.7/site-packages (from pandas>=0.21->statsmodels==0.12.2->-r requirements.txt (line 1)) (2021.1)
Requirement already satisfied: ptyprocess>=0.5 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from pexpect>4.3->ipython>=4.0.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.7.0)
Requirement already satisfied: wcwidth in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython>=4.0.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.2.5)
Requirement already satisfied: notebook>=4.4.1 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (6.4.4)
Requirement already satisfied: Send2Trash>=1.5.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (1.8.0)
Requirement already satisfied: prometheus-client in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.11.0)
Requirement already satisfied: terminado>=0.8.3 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.12.1)
Requirement already satisfied: argon2-cffi in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (21.1.0)
Requirement already satisfied: nbconvert in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (6.2.0)
Requirement already satisfied: jinja2 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (3.0.1)
Requirement already satisfied: cffi>=1.0.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (1.14.6)
Requirement already satisfied: pycparser in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from cffi>=1.0.0->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (2.20)
Requirement already satisfied: MarkupSafe>=2.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from jinja2->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (2.0.1)
Requirement already satisfied: bleach in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (4.1.0)
Requirement already satisfied: nbclient<0.6.0,>=0.5.0 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.5.4)
Requirement already satisfied: mistune<2,>=0.8.1 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.8.4)
Requirement already satisfied: defusedxml in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.7.1)
Requirement already satisfied: jupyterlab-pygments in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.1.2)
Requirement already satisfied: pandocfilters>=1.4.1 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (1.5.0)
Requirement already satisfied: testpath in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.5.0)
Requirement already satisfied: packaging in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (21.0)
Requirement already satisfied: webencodings in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (0.5.1)
Requirement already satisfied: pyparsing>=2.0.2 in /shared-libs/python3.7/py-core/lib/python3.7/site-packages (from packaging->bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets==7.6.5->-r requirements.txt (line 2)) (2.4.7)
Installing collected packages: widgetsnbextension, patsy, jupyterlab-widgets, statsmodels, ipywidgets
Successfully installed ipywidgets-7.6.5 jupyterlab-widgets-1.0.2 patsy-0.5.2 statsmodels-0.12.2 widgetsnbextension-3.5.1
print("Hello, world!")
Hello, world!
?pd.DataFrame
%quickref
%matplotlib inline
import matplotlib.pyplot as plt
import ipywidgets as widgets
from scipy.stats import norm, linregress
out = [widgets.Output(), widgets.Output()]
tabs = widgets.Tab(children=[out[0], out[1]])
tabs.set_title(0, 'Linear regression')
tabs.set_title(1, 'Normal distribution')
with out[0]:
# Fit line to some random data
x = np.random.uniform(size=30)
y = x + np.random.normal(scale=0.1, size=30)
slope, intercept, _, _, _ = linregress(x,y)
u = np.linspace(0, 1)
# Plot
fig1, axes1 = plt.subplots()
axes1.scatter(x, y)
axes1.plot(u, slope * u + intercept, 'k')
plt.show(fig1)
with out[1]:
# Plot the probability distribution function (pdf) of the
# standard normal distribution.
x = np.linspace(-3.5, 3.5, num=100)
p = norm.pdf(x)
# Plot
fig2, axes2 = plt.subplots()
axes2.plot(x, p)
plt.show(fig2)
display(tabs)
IPyWidgets are not supported
import pandas as pd
import seaborn as sns
iris = sns.load_dataset('iris')
# `iris` is stored as a pandas DataFrame
print('Type of "iris":', type(iris))
# Show the first few entries in this DataFrame
iris.head()
Type of "iris": <class 'pandas.core.frame.DataFrame'>
# 1. Column labels, and types of data in each column
print(iris.dtypes)
sepal_length float64
sepal_width float64
petal_length float64
petal_width float64
species object
dtype: object
# 2. Calculate the average petal length
print(iris['petal_length'].mean())
3.7580000000000005
# 3. Determine which iris species are in the dataset
print(iris['species'].unique())
['setosa' 'versicolor' 'virginica']
# 4. Summary of the data
iris.describe()
"""
IPython.display is a convenience function that works in Jupyter Notebook
(or, more generally, any IPython-based application) that will show
objects in a nicer way than using print(). We'll use it in this notebook
to show some pandas DataFrames.
"""
from IPython.display import display
"""
Create a DataFrame for each species of flower. I've provided two
methods for creating these DataFrames below; pick whichever you
prefer as they are equivalent.
"""
# Method 1: "query" function
setosa = iris.query('species == "setosa"')
versicolor = iris.query('species == "versicolor"')
# Method 2: index into the DataFrame
virginica = iris[iris['species'] == 'virginica']
"""
Show the first few entries of the DataFrame corresponding to each species
"""
print('Setosa data:')
display(setosa.head())
print('Versicolor data:')
display(versicolor.head())
print('Virginica data:')
display(virginica.head())
Setosa data:
Versicolor data:
Virginica data:
"""
Get the first column.
Note: whenever we extract a single column of a pandas DataFrame,
we get back a pandas Series object. To turn it back into a DataFrame,
we add the line `first_column = pd.DataFrame(first_column)`.
"""
first_column = iris.iloc[:,0]
first_column = pd.DataFrame(first_column)
print('First column:')
display(first_column.head())
"""
Get the first through third columns
"""
first_through_third_columns = iris.iloc[:,0:3]
print('First through third columns:')
display(first_through_third_columns.head())
"""
Get the 'species' column.
"""
species = iris['species']
species = pd.DataFrame(species)
print('Species column:')
display(species.head())
"""
Get all columns *except* the species column
"""
all_but_species = iris.iloc[:, iris.columns != 'species']
print("All columns *except* species:")
display(all_but_species.head())
First column:
First through third columns:
Species column:
All columns *except* species:
column_labels = ['A', 'B']
column_entries = [
[1, 2],
[4, 5],
[7, 8]
]
pd.DataFrame(column_entries, columns=column_labels)
import numpy as np
# 1. Create an array with the numbers [1, 2, 3]
x = np.array([1, 2, 3])
# 2. Create a 2 x 2 matrix with [1, 2] in the first row and [3, 4]
# in the second row.
x = np.array( [[1,2], [3,4]] )
# 3. Create an array with the numbers 0, 1, ... , 9. Equivalent to
# calling np.array(range(10))
x = np.arange(10)
# 4. Create a 2 x 2 matrix with zeros in all entries
x = np.zeros( (2,2) )
# 5. Get the total number of items in the matrix, and the shape of
# the matrix.
num_items = x.size
matrix_shape = x.shape
### Constants: pi
print('π = %f' % np.pi)
print()
### Simple functions: sine, cosine, e^x, log, ...
print('sin(0) = %f' % np.sin(0))
print('cos(0) = %f' % np.cos(0))
print('e^1 = %f' % np.exp(1))
print('ln(1) = %f' % np.log(1))
print()
### Minimums, maximums, sums...
x = np.array([1,2,3])
print('Min of [1,2,3] = %d' % x.min())
print('Max of [1,2,3] = %d' % x.max())
print('Sum of [1,2,3] = %d' % x.sum())
print()
### Random numbers: uniform distribution, normal distribution, ...
print('Random numbers:')
print('Uniform([0,1]): %f' % np.random.uniform(0,1))
print('Normal(0,1): %f' % np.random.normal(loc=0, scale=1))
print('Poisson(1): %f' % np.random.poisson(1))
π = 3.141593
sin(0) = 0.000000
cos(0) = 1.000000
e^1 = 2.718282
ln(1) = 0.000000
Min of [1,2,3] = 1
Max of [1,2,3] = 3
Sum of [1,2,3] = 6
Random numbers:
Uniform([0,1]): 0.247945
Normal(0,1): -0.854143
Poisson(1): 0.000000
x = np.array([1,2,3])
y = np.array([4,5,6])
print('1 + [1,2,3] =', 1 + x)
print('3 * [1,2,3] =', 3 * x)
print('[1,2,3] * [4,5,6] =', x * y)
print('[1,2,3] + [4,5,6] =', x + y)
print('Dot product of [1,2,3] and [4,5,6] =', x.dot(y))
1 + [1,2,3] = [2 3 4]
3 * [1,2,3] = [3 6 9]
[1,2,3] * [4,5,6] = [ 4 10 18]
[1,2,3] + [4,5,6] = [5 7 9]
Dot product of [1,2,3] and [4,5,6] = 32
import seaborn as sns
sns.set()
sns.pairplot(iris, hue="species")
from sklearn.linear_model import LinearRegression
"""
Get all of the irises of the species "setosa" and place them in
a pandas DataFrame called `data`.
Also try with 'setosa' replaced by 'versicolor' and 'virginica'
"""
data = iris[iris['species'] == 'setosa']
"""
Split the data into two pieces: the independent variables
(sepal_length, sepal_width, and petal_width), and the dependent
variable (petal_length).
"""
x = data[['sepal_length','sepal_width','petal_width']]
y = data['petal_length']
"""
Create a scikit-learn LinearRegression object which we will
fit to the data.
"""
lm = LinearRegression()
lm.fit(x,y)
for (coef,col) in zip(lm.coef_, x.columns):
print("%-30s %+.3f" % ("Coefficient for " + col + ":", coef))
Coefficient for sepal_length: +0.116
Coefficient for sepal_width: -0.029
Coefficient for petal_width: +0.463
import statsmodels.api as sm
# Also try with 'setosa' replaced by 'versicolor' and 'virginica'
data = iris[iris['species'] == 'setosa']
x = data[['sepal_length','sepal_width','petal_width']]
y = data['petal_length']
"""
Add y-intercept term to our linear model
"""
x = sm.add_constant(x)
"""
Perform linear regression
"""
lm = sm.OLS(y,x)
results = lm.fit()
"""
Print the results
"""
print(results.summary())
OLS Regression Results
==============================================================================
Dep. Variable: petal_length R-squared: 0.145
Model: OLS Adj. R-squared: 0.089
Method: Least Squares F-statistic: 2.598
Date: Tue, 28 Sep 2021 Prob (F-statistic): 0.0636
Time: 11:55:02 Log-Likelihood: 21.003
No. Observations: 50 AIC: -34.01
Df Residuals: 46 BIC: -26.36
Df Model: 3
Covariance Type: nonrobust
================================================================================
coef std err t P>|t| [0.025 0.975]
--------------------------------------------------------------------------------
const 0.8655 0.343 2.521 0.015 0.174 1.557
sepal_length 0.1161 0.102 1.142 0.259 -0.089 0.321
sepal_width -0.0287 0.093 -0.307 0.760 -0.217 0.159
petal_width 0.4625 0.234 1.976 0.054 -0.009 0.934
==============================================================================
Omnibus: 3.292 Durbin-Watson: 1.653
Prob(Omnibus): 0.193 Jarque-Bera (JB): 2.558
Skew: 0.238 Prob(JB): 0.278
Kurtosis: 4.001 Cond. No. 93.4
==============================================================================
Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
import statsmodels.formula.api as smf
df = iris[iris['species'] == 'setosa']
# Predict petal length from sepal_width, sepal_length, and petal_width
model = smf.ols(formula='petal_length ~ sepal_width + sepal_length + petal_width',
data=df)
results = model.fit()
print("Results (petal_length ~ sepal_width + sepal_length + petal_width)")
print(results.summary())
print('-' * 80)
# Predict petal length from just sepal_length and petal_width
model = smf.ols(formula='petal_length ~ sepal_length + petal_width',
data=df)
results = model.fit()
print("Results (petal_length ~ sepal_length + petal_width)")
print(results.summary())
Results (petal_length ~ sepal_width + sepal_length + petal_width)
OLS Regression Results
==============================================================================
Dep. Variable: petal_length R-squared: 0.145
Model: OLS Adj. R-squared: 0.089
Method: Least Squares F-statistic: 2.598
Date: Tue, 28 Sep 2021 Prob (F-statistic): 0.0636
Time: 03:44:49 Log-Likelihood: 21.003
No. Observations: 50 AIC: -34.01
Df Residuals: 46 BIC: -26.36
Df Model: 3
Covariance Type: nonrobust
================================================================================
coef std err t P>|t| [0.025 0.975]
--------------------------------------------------------------------------------
Intercept 0.8655 0.343 2.521 0.015 0.174 1.557
sepal_width -0.0287 0.093 -0.307 0.760 -0.217 0.159
sepal_length 0.1161 0.102 1.142 0.259 -0.089 0.321
petal_width 0.4625 0.234 1.976 0.054 -0.009 0.934
==============================================================================
Omnibus: 3.292 Durbin-Watson: 1.653
Prob(Omnibus): 0.193 Jarque-Bera (JB): 2.558
Skew: 0.238 Prob(JB): 0.278
Kurtosis: 4.001 Cond. No. 93.4
==============================================================================
Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
--------------------------------------------------------------------------------
Results (petal_length ~ sepal_length + petal_width)
OLS Regression Results
==============================================================================
Dep. Variable: petal_length R-squared: 0.143
Model: OLS Adj. R-squared: 0.107
Method: Least Squares F-statistic: 3.926
Date: Tue, 28 Sep 2021 Prob (F-statistic): 0.0265
Time: 03:44:49 Log-Likelihood: 20.952
No. Observations: 50 AIC: -35.90
Df Residuals: 47 BIC: -30.17
Df Model: 2
Covariance Type: nonrobust
================================================================================
coef std err t P>|t| [0.025 0.975]
--------------------------------------------------------------------------------
Intercept 0.8813 0.336 2.622 0.012 0.205 1.558
sepal_length 0.0934 0.069 1.349 0.184 -0.046 0.233
petal_width 0.4596 0.232 1.984 0.053 -0.006 0.926
==============================================================================
Omnibus: 3.071 Durbin-Watson: 1.640
Prob(Omnibus): 0.215 Jarque-Bera (JB): 2.360
Skew: 0.193 Prob(JB): 0.307
Kurtosis: 3.992 Cond. No. 76.2
==============================================================================
Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.