{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 3: Statistical Analysis\n", "\n", "## Feature Pre-processing\n", "\n", "In the last section, we talked about how you can combine and transform data for the purpose of analysis. How do we achieve this? We need to have a clear understanding of what our input data is, and what we hope to achieve for our output, such that this can help inform our investigation. Therefore, we need to think about the input, the process, and the output. \n", "\n", "**How do we construct features from our data?** Essentially features can be thought of as numerical values, and quite often, we may just be counting data. If I wanted to derive a feature to measure RAM usage, or email usage, I would need to specify some time interval to observe (e.g., per hour, or per day). Much like when reporting speed, we would refer to miles per hour, rather than recording the absolute speed of the vehicle at every observation. In this way, we generalise to the time interval that makes most sense in practice (we could examine miles per minute, but it’s more natural to state 70 mph rather than 1.67 miles per minute). If I’m studying email usage, rather than simply just the number of emails sent, I may start to form some classifications of my features – for example, number of emails sent to unique recipients, number of emails sent to a specific individual, number of new recipients per day, number of words in each email, number of unique words in each email, and the list goes on. Hopefully you can start to see that there are many possible ways that we could derive numerical count features about email (and many other data observations). Crucially to remember is that we are interested in observations over time, so that we can compare time periods to understand where there may be an increase or decrease in the observed measure. As well as temporal features, we may be interested in spatial features – such as pixel locations in an image or GPS points on a map, or furthermore, we may be interested in sptiotemporal features – such as a pixel location in a video stream or a moving vehicle position.\n", "\n", "**Finding and cleaning data?** There are a number of excellent resources for gathering example datasets, such as [Kaggle](https://www.kaggle.com/), the [VAST Challenge](http://www.vacommunity.org/About+the+VAST+Challenge), the [UC Irvine Machine Learning repository](https://archive.ics.uci.edu/ml/index.php), and numerous other examples hosted online and in various data repositories. Whilst these are useful for learning about machine learning and visualisation, much of the hard work has already been done for us. **Web scraping** is often used to gather large amounts of data from online sources, for example, news story analysis, or examining CVE records. In such cases, there will be significant cleaning of data required, such as filtering out noise in the collected data, or correcting timestamps so that they are reported consistently. We will look at methods for cleaning data in our example practicals.\n", "\n", "## Types of Anomalies\n", "\n", "[Anomaly detection](https://www.datasciencecentral.com/profiles/blogs/anomaly-detection-for-the-oxford-data-science-for-iot-course) is widely discussed in terms of cyber security, and how “artificial intelligence can spot anomalies in your data”. However, it’s crucial to understand what we mean by anomalies, and what type of anomalies may exist. This will help us to understand what the anomalies actually mean to assess whether they pose some form of security concern. Here we will focus primarily on 3 types of outlier: point, contextual, and subsequence. In most applications here, we are thinking about [time-series anomalies](https://blog.statsbot.co/time-series-anomaly-detection-algorithms-1cef5519aef2): essentially how something changes over time. \n", "\n", "- **Point anomaly:** This is where a single point in a time series is anomalous compared to the rest of the data. This is the most typical kind of anomaly that we may think of, yet if we are graphing the correct data, it is also the most straightforward to identify.\n", "- **Contextual anomaly:** This is where a data instance in a time series is considered anomalous because of the context of the data. If we were measuring the temperature of different locations, and one location in the northern hemisphere reported low temperatures in the Summer, this may be an anomaly. Note that the temperature data alone is not sufficient to recognise this – we would need to have prior knowledge of temperature data for countries in the northern hemisphere during the Summer months, gathered historically, to be able to inform on the context here. Another example would be the presence of malware running on an infected machine, and the impact on CPU usage and process count. To recognise the anomaly here, we would need to know what the “typical” CPU usage and process count are in a state where the machine is deemed to be acting normally. In this manner, the anomaly is identified with respect to the historical data, where this observation may be much higher or much lower than the previous records. This historical data may be informed from some database of known anomalous (and non-anomalous) cases, or it may be informed directly from the data itself, where a repeating pattern is expected (e.g., seasonal).\n", "- **Subsequence anomaly:** This is where a sequence of individual events are deemed to be anomalous with regards to the rest of the data, although the individual data points themselves are not deemed as anomalous. This could be seen as similar to contextual anomalies, however the key difference is that subsequence anomalies may not be out-of-distribution, whereas contextual anomalies would be. For example, a recurring pattern that then suddenly flattens for a period, and then begins again, would be recognised as an anomaly. Yet, each individual data point is well within the prior distribution of the data. It is only anomalous because the sequence, or pattern, is anomalous. Consider another example related to insider threat detection. An employee may conduct the following steps in an activity: (1) log into payment application, (2) retrieve payment details, (3) record item to be purchased, (4) enter payment details, and (5) send email to line manager. Each individual step may not be anomalous on their own (i.e., all legitimate actions). Likewise, they may be authorised to make purchases at any time of day, as needed. However if something changed in this sequence - e.g., suppose they stopped emailing line manager following payment, stopped recording item to be purchased; or added a new step – such as open notepad, and write purchase details to file – then there would be a cause for concern. As mentioned, here each individual activity is legitimate, however it is about observing a anomalous sequence of events, rather than an individual anomaly. Note how subsequence anomalies can be used for both numerical and discrete data – such as labels. Another example for text analytics could be, “The quick brown fox jumps over the lazy camel”. Many people will be familiar with this phrase, and will therefore recognise that the word camel is an anomaly – not because camel would necessarily be an incorrect statement, but because the well known quote would say ‘dog’.\n", "\n", "![Alt text](./images/image8.png)\n", "\n", "## Descriptive Statistics\n", "\n", "Statistics are at the very heart of understanding the properties of data. There are some [core concepts](https://elearningindustry.com/stats-101-need-know-statistics) that you should therefore understand. Firstly, when we talk about a set of data, we may refer to this as a distribution – it is a set of measured observations that are indicative of real-world. The Mean is the average value of the distribution – for example, if I was assessing the number of network packets received per minute, then the mean would be the average number of packets received per minute. This could be used to estimate a baseline for the activity (i.e., the expected behaviour). The Median would then be the middle value of the distribution, if I arranged all values from lowest to highest. The Mode is the most common value that has occurred in the distribution. Each of these gives us some indication of where the centre of our data lies – however each has its own weaknesses. If there are outliers in the data, the mean will be skewed by these – so a single point anomaly can change the mean completely. With the median, essentially only the first half of the data is counted (i.e., if I have n values I count up to the n/2 value) which means that the higher values are completely ignored. Therefore, it is good practice to assess all measures in case they help inform different stories about the data. Standard deviation is also an important measurement to understand. This informs about the spread of the data – whether it is narrow around the centre point, or spread out across the range of values (the range being essentially the difference between the largest and smallest values). In many applications, it is useful to consider the normal distribution (sometimes referred to as a bell curve, or a Gaussian distribution). The normal distribution can be expressed by the mean to define the centre point, and the standard deviation to define the spread. This becomes particularly useful when we want to consider whether a new observation is deemed to be inside or outside of the distribution, since approximately 95% of the data observations should be within 2 standard deviations of the mean. \n", "\n", "![Alt text](./images/image9.png)\n", "\n", "## Comparing Data\n", "\n", "Suppose we have four datasets that we wish to compare, to observe any deviations or anomalies that may occur. How may we approach this task? Let's assume that each dataset has two parameters (X and Y). We therefore have X1 and Y1 as dataset 1, X2 and Y2 as dataset 2, X3 and Y3 as dataset 3, and X4 and Y4 as dataset 4. We can use the code below to load in our sample dataset." ] }, { "cell_type": "code", "execution_count": 7, "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", " \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", "
X1Y1X2Y2X3Y3X4Y4
0108.04109.14107.4686.58
186.9588.1486.7785.76
2137.58138.741312.7487.71
398.8198.7797.1188.84
4118.33119.26117.8188.47
5149.96148.10148.8487.04
667.2466.1366.0885.25
744.2643.1045.391912.50
81210.84129.13128.1585.56
974.8277.2676.4287.91
1055.6854.7455.7386.89
\n", "
" ], "text/plain": [ " X1 Y1 X2 Y2 X3 Y3 X4 Y4\n", "0 10 8.04 10 9.14 10 7.46 8 6.58\n", "1 8 6.95 8 8.14 8 6.77 8 5.76\n", "2 13 7.58 13 8.74 13 12.74 8 7.71\n", "3 9 8.81 9 8.77 9 7.11 8 8.84\n", "4 11 8.33 11 9.26 11 7.81 8 8.47\n", "5 14 9.96 14 8.10 14 8.84 8 7.04\n", "6 6 7.24 6 6.13 6 6.08 8 5.25\n", "7 4 4.26 4 3.10 4 5.39 19 12.50\n", "8 12 10.84 12 9.13 12 8.15 8 5.56\n", "9 7 4.82 7 7.26 7 6.42 8 7.91\n", "10 5 5.68 5 4.74 5 5.73 8 6.89" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "data = pd.read_csv('./data/anscombe.csv')\n", "data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First of all, we can calculate statistics for each of the four datasets to see how they may vary. We will try a set of common statistics in the next few cells, starting with the mean of both X and Y parameters, the variance of X and Y parameters, the correlation between X and Y parameters, and finally the line of best fit, or the regression line, of our X and Y parameters." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean of X data:\n", "9.0\n", "9.0\n", "9.0\n", "9.0\n" ] } ], "source": [ "print (\"Mean of X data:\")\n", "for i in ['X1', 'X2', 'X3', 'X4']:\n", " print (data[i].mean())" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Variance of X data:\n", "11.0\n", "11.0\n", "11.0\n", "11.0\n" ] } ], "source": [ "print (\"Variance of X data:\")\n", "for i in ['X1', 'X2', 'X3', 'X4']:\n", " print (data[i].var())" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean of Y data:\n", "7.500909090909093\n", "7.50090909090909\n", "7.5\n", "7.500909090909091\n" ] } ], "source": [ "print (\"Mean of Y data:\")\n", "for i in ['Y1', 'Y2', 'Y3', 'Y4']:\n", " print (data[i].mean())" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Variance of Y data:\n", "4.127269090909091\n", "4.127629090909091\n", "4.12262\n", "4.123249090909091\n" ] } ], "source": [ "print (\"Variance of Y data:\")\n", "for i in ['Y1', 'Y2', 'Y3', 'Y4']:\n", " print (data[i].var())" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Correlation between X and Y:\n", " X1 Y1\n", "X1 1.000000 0.816421\n", "Y1 0.816421 1.000000\n", " X2 Y2\n", "X2 1.000000 0.816237\n", "Y2 0.816237 1.000000\n", " X3 Y3\n", "X3 1.000000 0.816287\n", "Y3 0.816287 1.000000\n", " X4 Y4\n", "X4 1.000000 0.816521\n", "Y4 0.816521 1.000000\n" ] } ], "source": [ "print (\"Correlation between X and Y:\")\n", "for i in [['X1','Y1'], ['X2','Y2'], ['X3','Y3'], ['X4','Y4']]:\n", " print (data[i].corr())" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0.50009091]]\n", "[[0.5]]\n", "[[0.49972727]]\n", "[[0.49990909]]\n" ] } ], "source": [ "from sklearn.linear_model import LinearRegression\n", "for i in [['X1','Y1'], ['X2','Y2'], ['X3','Y3'], ['X4','Y4']]:\n", " lm = LinearRegression() \n", " lm.fit(data[i[0]].values.reshape(-1, 1), data[i[1]].values.reshape(-1, 1))\n", " print(lm.coef_)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Having performed our initial analysis, what can we observe about our four datasets. What is particular intriguing in this example, is that all four datasets have exactly the same statistical characteristics! They all show the same mean for both X and Y, the same variance, correlation, and regression line. So, presumably are these datasets essentially all the same then?\n", "\n", "This is a perfect case for data visualisation, and is actually a well-known problem known as Anscombe’s Quartet. When we visualise the data using four scatter plots, we can quickly determine that the four datasets are wildly different. However, on the surface, the descriptive statistics gave the same information. As data becomes increasingly large, we do need to use statistical measures and these are important, but it is also important that we do not rely on them solely. [Anscombe](https://www.sjsu.edu/faculty/gerstman/StatPrimer/anscombe1973.pdf) (1973) said:\n", "\n", "> *“make both calculations and graphs. Both sorts of output should be stuidied; each will contribute to understanding”*" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGdCAYAAABO2DpVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAfKUlEQVR4nO3df2xV9f3H8dftLdzbsN6rbSy91QvWzllLYcpYTYHFZIJCSOdcphsBZOD+WEMC6EbALdg1iAWMzKlLFbe4xSpkW0TtFkvQrzqZaKsVQ1cHoh0gFJtYvfei69Xde75/kFau/XlvP/fHuX0+kv5xT8/lvr0h3Kef8+M6LMuyBAAAYEBOugcAAADZg7AAAADGEBYAAMAYwgIAABhDWAAAAGMICwAAYAxhAQAAjCEsAACAMbmpfsFoNKrTp08rPz9fDocj1S8PAAASYFmWQqGQSkpKlJMz/LpEysPi9OnT8vv9qX5ZAABgwMmTJ3XJJZcM+/uUh0V+fr6kc4N5PJ5UvzwAAEhAMBiU3+8f+BwfTsrDov/wh8fjISwAALCZ0U5j4ORNAABgDGEBAACMISwAAIAxhAUAADCGsAAAAMYQFgAAwBjCAgAAGENYAAAAY1J+gywAQOIiUUutXb3qCfWpKN+tqtICOXP43iVkDsICAGyipaNb9c2d6g70DWzzed2qq6nQokpfGicDvsShEACwgZaObtU2tcdEhSSdCfSptqldLR3daZoMiEVYAECGi0Qt1Td3yhrid/3b6ps7FYkOtQeQWoQFAGS41q7eQSsV57MkdQf61NrVm7qhgGEQFgCQ4XpCw0dFIvsByURYAECGK8p3G90PSCauCgEwYdnl0s2q0gL5vG6dCfQNeZ6FQ1Kx99z8QLoRFgAmJDtduunMcaiupkK1Te1ySDFx0Z9BdTUVGRlFkn0CDmY4LMtK6WnEwWBQXq9XgUBAHo8nlS8NAJK+vHTzq//49X/UNS6fnXFxIdkrhvrZcWYMbayf34QFgAklErU0f/v/DXuVRf9hhQMbv5uR/1dtp//7t2vAYWhj/fzmUAiACSWeSzerywpTN9gYOXMcGTnXV4127w2Hzt17Y2FFccaGERLDVSEAJhQu3UwN7r0xcREWACYULt1MDQJu4iIsAEwo/ZduDrf47tC5kwu5dHN8CLiJK+6wCIVCWr9+vaZPn668vDzNnTtXbW1tyZgNAIzrv3RT0qC4sMOlm3ZBwE1ccYfFT3/6U+3fv1+PP/64Dh8+rOuvv14LFizQqVOnkjEfABi3qNKnxuWzVeyN/b/lYq+bKxUMIeAmrrguN/3vf/+r/Px8PfPMM1qyZMnA9m9961tavHix7r777lH/DC43BZAp7HTppl1xH4vskZTLTf/3v/8pEonI7Y6t/Ly8PB04cCCxSQEgTexy6aadLar0aWFFMQE3gcQVFvn5+aqurtaWLVt05ZVXaurUqdq9e7cOHjyor3/960M+JxwOKxwODzwOBoPjmxgAYCsE3MQS9zkWjz/+uCzL0sUXXyyXy6UHHnhAS5cuVU7O0H9UQ0ODvF7vwI/f7x/30AAAIDMlfEvvTz/9VMFgUD6fTz/60Y909uxZ/f3vfx+031ArFn6/n3MsAACwkaTf0nvKlCmaMmWKPv74Y+3bt087duwYcj+XyyWXy5XoywAAABuJOyz27dsny7J0xRVX6NixY9qwYYPKy8u1atWqZMwHAABsJO5zLAKBgNasWaPy8nLdeuutmj9/vvbt26dJkyYlYz4AAGAjfG06AAAY1Vg/v/muEAAAYEzCJ28CwPm4iyUAibAAYAC3bQbQj0MhAMalpaNbtU3tMVEhSWcCfaptaldLR3eaJgMSF4laOvjeR3rm0CkdfO8jRaIpPR3R1lixAJCwSNRSfXOnhvon19K5b7Gsb+7UwopiDovANliBGx9WLAAkrLWrd9BKxfksSd2BPrV29aZuKGAcWIEbP8ICQMJ6QsNHRSL7Aek02gqcdG4FjsMiIyMsACSsKN9tdD8gnViBM4OwAJCwqtIC+bxuDXf2hEPnjk1XlRakciwgIazAmUFYAEiYM8ehupoKSRoUF/2P62oqOHETtsAKnBmEBYBxWVTpU+Py2Sr2xv5jW+x1q3H5bM6ih22wAmcGl5sCGLdFlT4trCjmzpuwtf4VuNqmdjmkmJM4WYEbO76EDACA83Afi6GN9fObFQsAAM7DCtz4EBYAAHyFM8eh6rLCdI9hS5y8CQAAjCEsAACAMYQFAAAwhrAAAADGEBYAAMAYwgIAABhDWAAAAGMICwAAYAxhAQAAjCEsAACAMYQFAAAwhrAAAADGEBYAAMAYwgIAABhDWAAAAGMICwAAYAxhAQAAjCEsAACAMYQFAAAwhrAAAADGEBYAAMCY3HQPAGCwSNRSa1evekJ9Ksp3q6q0QM4cR7rHAoBRERZAhmnp6FZ9c6e6A30D23xet+pqKrSo0pfGyQBgdBwKATJIS0e3apvaY6JCks4E+lTb1K6Wju40TQYg00Wilg6+95GeOXRKB9/7SJGolZY5WLEAMkQkaqm+uVND/VNgSXJIqm/u1MKKYg6LAIiRSSudrFgAGaK1q3fQSsX5LEndgT61dvWmbigAGS/TVjoJCyBD9ISGj4pE9gOQ/UZb6ZTOrXSm8rAIYQFkiKJ8t9H9AGS/TFzpJCyADFFVWiCf163hzp5w6Nwx06rSglSOBSCDZeJKZ1xhEYlEtHnzZpWWliovL09lZWXasmWLLCs9Z54C2cSZ41BdTYUkDYqL/sd1NRWcuAlgQCaudMYVFtu3b1djY6MeeughvfPOO9q+fbt27NihBx98MFnzARPKokqfGpfPVrE39h+BYq9bjctncx8LADEycaUzrstNX331Vd14441asmSJJOnSSy/V7t271drampThgIloUaVPCyuKufMmgFH1r3TWNrXLIcWcxJmulc64Vizmzp2rF154QUePHpUkvf322zpw4IAWL1487HPC4bCCwWDMD4CROXMcqi4r1I1XXazqskKiAsCwMm2lM64Vi02bNikYDKq8vFxOp1ORSERbt27VsmXLhn1OQ0OD6uvrxz0oAAAYWiatdDqsOM683LNnjzZs2KB7771XM2bM0KFDh7R+/Xrt3LlTK1euHPI54XBY4XB44HEwGJTf71cgEJDH4xn/fwEAAEi6YDAor9c76ud3XGHh9/u1adMmrVmzZmDb3XffraamJv373/82OhgAAMgcY/38jusci88++0w5ObFPcTqdikajiU0JAACySlznWNTU1Gjr1q2aNm2aZsyYobfeeks7d+7U6tWrkzUfAACwkbgOhYRCIW3evFl79+5VT0+PSkpKtHTpUt11112aPHnymP4MDoUAAGA/STnHwgTCAgAA+0nKORYAAAAjISwAAIAxhAUAADCGsAAAAMYQFgAAwBjCAgAAGENYAAAAYwgLAABgDGEBAACMISwAAIAxhAUAADCGsAAAAMYQFgAAwBjCAgAAGENYAAAAYwgLAABgDGEBAACMISwAAIAxhAUAADCGsAAAAMYQFgAAwBjCAgAAGENYAAAAYwgLAABgDGEBAACMISwAAIAxhAUAADCGsAAA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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "for i in [['X1','Y1'], ['X2','Y2'], ['X3','Y3'], ['X4','Y4']]:\n", " plt.scatter(data[i[0]], data[i[1]])\n", " plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Datasaurus Dozen\n", "\n", "A modern take on the Anscombe quartet is the [Datasaurus Dozen](https://dl.acm.org/doi/10.1145/3025453.3025912). Given a distribution of points - in this example, a shape that looks remarkably like a dinosaur, the proposed system is able to use machine learning techniques (simulated annealing) to identify other configurations of the data points such that the underlying statistical properties match those of the original dataset. As the name suggests, the original depiction of a dinosaur can be mapped to 11 other data representations whilst also preserving the underlying stastistical properties.\n", "\n", "![Alt text](./images/image11.gif)\n", "\n", "## Correlation does not imply Causation\n", "\n", "As a final point for discussion in this section, it is important to recognise a golden rule when working with statistics, and that is [correlation does not imply causation](https://en.wikipedia.org/wiki/Correlation_does_not_imply_causation). Ice cream sales may increase when the weather is sunny, and likewise shark attacks may increase when the weather is sunny. However, shark attacks are not caused by ice cream sales (nor are ice cream sales caused by shark attacks). In this example, the hidden variable that both attributes rely on is sunny weather – although there are actually many other factors and neither case is caused by a single variable. \n", "\n", "![Alt text](./images/image12.png)\n", "\n", "When we are exploring data science for cyber security, we want to make well informed decisions from the data. It is important to recognise that attributes observed in the SOC may or may not necessarily be caused by other correlated attributes in your workforce. Further research explores [causal modelling in cyber security](https://www.astesj.com/publications/ASTESJ_050349.pdf) to determine how effective this can be.\n", "\n", "\n", "![Alt text](./images/image13.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Further reading\n", "\n", "- [T. Mahmood and U. Afzal, \"Security Analytics: Big Data Analytics for cybersecurity: A review of trends, techniques and tools,\" 2013 2nd National Conference on Information Assurance (NCIA), 2013, pp. 129-134, doi: 10.1109/NCIA.2013.6725337.](https://ieeexplore.ieee.org/document/6725337)\n", "- [Weihs, C., Ickstadt, K. Data Science: the impact of statistics. Int J Data Sci Anal 6, 189–194 (2018). https://doi.org/10.1007/s41060-018-0102-5](https://link.springer.com/article/10.1007/s41060-018-0102-5)\n", "- [Calude, C.S., Longo, G. The Deluge of Spurious Correlations in Big Data. Found Sci 22, 595–612 (2017). https://doi.org/10.1007/s10699-016-9489-4](https://link.springer.com/article/10.1007/s10699-016-9489-4)\n", "- [Briggs, W.M. Common Statistical Fallacies. Journal of American Physicians and Surgeons, Volume 19, Number 2 (2014).](https://www.jpands.org/vol19no2/briggs.pdf)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.13" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }