
Strategies for optimal learning.
How to use different programming languages in the course.
Simulate data and run a statistical analysis. A fun way to start the course :)
I explain how to get the most out of the interactive part of this course: The Q&A forum!
A discussion about memorizing formulas.
A reminder about foundational arithmetic rules.
Ways of representing very large and very small numbers.
Mathematical notation for adding a series of numbers.
Absolute value is the distance away from zero, regardless of sign.
Natural exponent and logarithm are two of the most important functions in math and its applications.
The logistic function is used often in statistics, machine learning, and optimization.
To rank data means to transform raw numerical values into ordinal position. Rank is used in non-parametric statistics.
My take on statistical terminology, grammar, and modern culture.
A philosophical discussion about how we can obtain numbers from the universe.
Data come in different forms, which has implications for ways of visualizing and analyzing data.
Introduction to data types in MATLAB and Python.
There is an important distinction between measuring *all* of the data vs. some of the data.
This distinction is related to sample size, and has implications for the generalizability of experimental findings.
The take-home message here is simple: Don't lie or cheat!
Lecture on how to create and interpret bar plots, including the types of data that are used.
Creating bar plots in MATLAB and Python, including parameters.
Creating and interpreting box plots, also called box-and-whisker plots.
Box plots in MATLAB and Python.
An exercise on creating box plots of random numbers drawn from different distributions.
A lecture on how to create and interpret histograms, including frequency vs. proportion.
Creating and visualizing histograms in code.
An exercise on transforming frequencies (counts) into proportions.
Pie charts are nice visualizations when your data add up to 100%.
Create pie charts in code. It's easier than you think!
A critical discussion of how to visualize categorical vs. continuous data using lines vs. bars.
A comparison of scaling the y-axis and x-axis intervals.
More on plotting and parameterizing line plots in code.
An exercise on scaling data in different ways.
The term "statistics" actually has two broad meanings: characteristics of a sample vs. generalizing to other samples.
These terms relate to how your data relate to the real world objects that the data measure.
Data come in different distributions, which has implications for how to visualize and analyze datasets.
You will learn how to create random data with different distributions in MATLAB and Python.
What happens when you plot the distribution of a distribution function? Find out!
The Gaussian distribution describes a remarkable and fundamental quality of the universe.
The mean, aka average, is the most common and insightful measure of a data set.
The mean is not appropriate for all data distributions; here you will learn two non-parametric measures of dataset centrality.
Computing mean, median, and mode in MATLAB and Python.
An exercise to help you understand the impact of outliers on mean, median, and mode.
You will learn about dispersion, which is how wide the data distribution is.
Computing different measures of dispersion in code.
IQR is a measures of the spread of most (but not all) of the data, and is robust to outliers.
See how to generate the interquartile range in code.
QQ plots show how your data compare to a theoretical normal (Gaussian) distribution.
Learn how QQ plots are created in Python and MATLAB.
Moments are statistical characteristics of the data. Here you'll learn the first four moments of a distribution.
More on histograms: Learn the formulas for determining the number of bins (data discretizations) to use.
Experiment with histogram parameters.
Learn how to create and interpret a beautiful graph for visualizing data and data distributions.
See how violin plots are created in code. Tip: Use lots of colors!
An exercise to visualize two data distributions in one violin plot.
Learn how to interpret this nonlinear measure of data dispersion.
Shannon entropy in code.
You will see how the bin-count parameter affects entropy.
No amount of fancy statistics or data cleaning can fix terrible data. Start with good data!
Z-score is the most important data normalization in statistics and machine learning.
Translate the z-score formula into code.
Min-max scaling is the second-most important data normalization method.
Translate min-max scaling into Python and MATLAB code.
An exercise to get from normalized data back to their original scale.
Outliers are unusual values that can completely screw up your analyses and interpretation!
This is one of the most common methods for identifying and removing outliers.
The modified z-score method uses the median instead of the mean, and therefore is good for removing outliers in non-normal distributions.
Implement the modified z-score method in code.
Does it really matter if you use the regular or modified z-score method? Come find out!
Extend the z-score method to outliers in high-dimensional datasets.
Multivariate outlier identification and removal, using concepts from geometry.
Another common method for removing outliers, based on threshold-exceedance.
See how data trimming is implemented in MATLAB and Python.
Instead of removing outliers, you can use analyses that are robust to outliers.
Some outliers can be transformed into non-outliers by applying certain nonlinear transformations.
A lecture on one of the main challenges of online learning. Just something to reflect on.
Introduction to probability and the role of probability in statistics.
Probability and proportion are really similar concepts, but it's important to know their subtle difference.
Instructions on how to compute probabilities (math).
How to compute probabilities in practice (code).
Probability and odds are different concepts; see how they differ and how to interpret odds ratios.
This exercise on odds-ratios will help make sure you really understand the math of odds-ratios.
Different terms are used for probabilities, depending on the data type (categorical vs. continuous).
Compute empirical probability mass functions.
cdfs are central to evaluating statistical significance. In this video you'll learn how to create and interpret cdfs.
Here you will learn how to compute cdfs from pdfs, including a potentially confusing aspect of their relationship.
An exercise to create cdfs from various random distributions.
Learn how to create a distribution of means from repeated samples. This is key to hypothesis-testing.
You already know how to do Monte Carlo sampling; here I will make sure you know the terminology.
Sampling isn't perfect, and understanding its limitations will help you properly interpret statistical results.
See an example of sampling variability in code using random data.
"Expected value" is really similar to the "average value" but incorporates probabilities of data values in the population.
The world is a complicated place, and some probabilities make sense only when taking other factors into account.
A hands-on example of conditional probabilities in MATLAB/Python.
Learn how to construct and interpret tree diagrams.
The LLN shows how more samples better approximates the true population parameters.
Think the LLN is too good to be true? You can see it for yourself in code!
The CLT is a surprising and yet fundamental aspect of the universe. Hint: All roads lead to Gauss.
Think the CLT is too good to be true? You can see it for yourself in code!
Another (surprising!) example of the CLT.
You will learn important statistical terminology.
Perhaps the most important (and easily confused) term in science.
You will understand how sample statistics are distributed in different states of reality.
What the heck is a p-value?!? Watch this video to find out! You'll also learn common misunderstandings.
P-values are closely related to z-values (from the z-score normalization). A few pairs of relationships are worth memorizing.
Degrees of freedom (abbreviated df) are used in computing p-values, and therefore in understanding and evaluating statistical significance.
Here you will learn two common errors in statistical inference; what they mean, where they come from, and why you cannot avoid them.
Parametric statistics rely on assumptions about null-hypothesis distributions. When those assumptions are violated (or cannot be verified), non-parametric approaches might be more suitable.
You are more likely to make statistical errors when you run multiple statistical tests. In this video, you will learn how to use Bonferroni correction to minimize the risk of statistical errors resulting from multiple comparisons.
"Significance" is an ambiguous and multifaceted term; it's not just about p<.05.
Cross-validation is a different statistical approach, often used in machine-learning. In this video, you will learn what it is and how to compute it.
This video follows up on the previous video by discussing the relationship (and differences) between cross-validation accuracy and statistical significance (p-values).
The t-test is a simple yet super-duper important statistical test for comparing two groups. Here you will learn about the idea and interpretation of the t-test.
There are several t-test formulas depending on the experiment design. The one-sample t-test is the most basic -- and the easiest to learn.
See the t-test implemented in code, both manually and using functions.
Data variance is super-important for the t-test effect size (which comes from the formula for the t-test). In this code challenge, you will explore this relationship yourself!
The two-samples t-test is a minor modification of the one-sample t-test, and is used for when you compare two groups against each other.
See the two-samples t-test in practice.
This exercise will help you discover the importance of sample size in statistical inference, even while holding constant the effect size and variance.
When your data violate assumptions of the t-test, or when you have outliers, you can use non-parametric t-tests.
Learn how to implement the signed-rank test in code.
Nonparameteric two-sample t-test to test for differences in medians between two groups.
See the nonparametric median-based two-group t-test implemented in code.
Learn how to create your own empirical null-hypothesis distribution to determine statistical significance, instead of relying on assumptions and formulas.
Permutation testing in code.
This exercise is your opportunity to explore the number of permutations that you need to create a null-hypothesis distribution.
Statistics and probability control your life. I don't just mean What YouTube's algorithm recommends you to watch next, and I don't just mean the chance of meeting your future significant other in class or at a bar. Human behavior, single-cell organisms, Earthquakes, the stock market, whether it will snow in the first week of December, and countless other phenomena are probabilistic and statistical. Even the very nature of the most fundamental deep structure of the universe is governed by probability and statistics.
You need to understand statistics.
Nearly all areas of human civilization are incorporating code and numerical computations. This means that many jobs and areas of study are based on applications of statistical and machine-learning techniques in programming languages like Python and MATLAB. This is often called 'data science' and is an increasingly important topic. Statistics and machine learning are also fundamental to artificial intelligence (AI) and business intelligence.
If you want to make yourself a future-proof employee, employer, data scientist, or researcher in any technical field -- ranging from data scientist to engineering to research scientist to deep learning modeler -- you'll need to know statistics and machine-learning. And you'll need to know how to implement concepts like probability theory and confidence intervals, k-means clustering and PCA, Spearman correlation and logistic regression, in computer languages like Python or MATLAB.
There are six reasons why you should take this course:
This course covers everything you need to understand the fundamentals of statistics, machine learning, and data science, from bar plots to ANOVAs, regression to k-means, t-test to non-parametric permutation testing.
After completing this course, you will be able to understand a wide range of statistical and machine-learning analyses, even specific advanced methods that aren't taught here. That's because you will learn the foundations upon which advanced methods are build.
This course balances mathematical rigor with intuitive explanations, and hands-on explorations in code.
Enrolling in the course gives you access to the Q&A, in which I actively participate every day.
I've been studying, developing, and teaching statistics for over 20 years, and I think math is, like, really cool.
What you need to know before taking this course:
High-school level maths. This is an applications-oriented course, so I don't go into a lot of detail about proofs, derivations, or calculus.
Basic coding skills in Python or MATLAB. This is necessary only if you want to follow along with the code. You can successfully complete this course without writing a single line of code! But participating in the coding exercises will help you learn the material. The MATLAB code relies on the Statistics and Machine Learning toolbox (you can use Octave if you don't have MATLAB or the statistics toolbox). Python code is written in Jupyter notebooks.
I recommend taking my free course called "Statistics literacy for non-statisticians". It's 90 minutes long and will give you a bird's-eye-view of the main topics in statistics that I go into much much much more detail about here in this course. Note that the free short course is not required for this course, but complements this course nicely. And you can get through the whole thing in less than an hour if you watch if on 1.5x speed!
You do not need any previous experience with statistics, machine learning, deep learning, or data science. That's why you're here!
Is this course up to date?
Yes, I maintain all of my courses regularly. I add new lectures to keep the course "alive," and I add new lectures (or sometimes re-film existing lectures) to explain maths concepts better if students find a topic confusing or if I made a mistake in the lecture (rare, but it happens!).
You can check the "Last updated" text at the top of this page to see when I last worked on improving this course!
What if you have questions about the material?
This course has a Q&A (question and answer) section where you can post your questions about the course material (about the maths, statistics, coding, or machine learning aspects). I try to answer all questions within a day. You can also see all other questions and answers, which really improves how much you can learn! And you can contribute to the Q&A by posting to ongoing discussions.
And, you can also post your code for feedback or just to show off -- I love it when students actually write better code than me! (Ahem, doesn't happen so often.)
What should you do now?
First of all, congrats on reading this far; that means you are seriously interested in learning statistics and machine learning. Watch the preview videos, check out the reviews, and, when you're ready, invest in your brain by learning from this course!