|
@@ -0,0 +1,890 @@
|
|
|
+{
|
|
|
+ "cells": [
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 68,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "import numpy as np\n",
|
|
|
+ "import pandas as pd\n",
|
|
|
+ "import matplotlib.pyplot as plt\n",
|
|
|
+ "import seaborn as sns\n",
|
|
|
+ "from scipy import stats\n",
|
|
|
+ "import statsmodels.api as sm\n",
|
|
|
+ "import statsmodels.formula.api as smf\n",
|
|
|
+ "%matplotlib inline"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {},
|
|
|
+ "source": [
|
|
|
+ "# Analyze Cliff Avoidance From LogFiles"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {},
|
|
|
+ "source": [
|
|
|
+ "## Load Data"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 3,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "data": {
|
|
|
+ "text/plain": [
|
|
|
+ "'/home/nickdg/ownCloud/Shared/Virtual Experiments Round 2/Analysis/CliffLogAnalysis'"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "execution_count": 3,
|
|
|
+ "metadata": {},
|
|
|
+ "output_type": "execute_result"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "pwd"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 84,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "data": {
|
|
|
+ "text/html": [
|
|
|
+ "<div>\n",
|
|
|
+ "<style>\n",
|
|
|
+ " .dataframe thead tr:only-child th {\n",
|
|
|
+ " text-align: right;\n",
|
|
|
+ " }\n",
|
|
|
+ "\n",
|
|
|
+ " .dataframe thead th {\n",
|
|
|
+ " text-align: left;\n",
|
|
|
+ " }\n",
|
|
|
+ "\n",
|
|
|
+ " .dataframe tbody tr th {\n",
|
|
|
+ " vertical-align: top;\n",
|
|
|
+ " }\n",
|
|
|
+ "</style>\n",
|
|
|
+ "<table border=\"1\" class=\"dataframe\">\n",
|
|
|
+ " <thead>\n",
|
|
|
+ " <tr style=\"text-align: right;\">\n",
|
|
|
+ " <th></th>\n",
|
|
|
+ " <th>Rat</th>\n",
|
|
|
+ " <th>SessionID</th>\n",
|
|
|
+ " <th>Date</th>\n",
|
|
|
+ " <th>Time</th>\n",
|
|
|
+ " <th>Experimenter</th>\n",
|
|
|
+ " <th>Phase</th>\n",
|
|
|
+ " <th>Condition</th>\n",
|
|
|
+ " <th>CliffSide</th>\n",
|
|
|
+ " <th>BoxSide</th>\n",
|
|
|
+ " <th>JumpSide</th>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " </thead>\n",
|
|
|
+ " <tbody>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>0</th>\n",
|
|
|
+ " <td>1B</td>\n",
|
|
|
+ " <td>968-874</td>\n",
|
|
|
+ " <td>2017-05-24</td>\n",
|
|
|
+ " <td>14:30:00</td>\n",
|
|
|
+ " <td>Eduardo</td>\n",
|
|
|
+ " <td>1</td>\n",
|
|
|
+ " <td>Real</td>\n",
|
|
|
+ " <td>Left</td>\n",
|
|
|
+ " <td>Center</td>\n",
|
|
|
+ " <td>Right</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>1</th>\n",
|
|
|
+ " <td>1B</td>\n",
|
|
|
+ " <td>968-874</td>\n",
|
|
|
+ " <td>2017-05-24</td>\n",
|
|
|
+ " <td>14:30:00</td>\n",
|
|
|
+ " <td>Eduardo</td>\n",
|
|
|
+ " <td>2</td>\n",
|
|
|
+ " <td>Static</td>\n",
|
|
|
+ " <td>Right</td>\n",
|
|
|
+ " <td>Center</td>\n",
|
|
|
+ " <td>Right</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>2</th>\n",
|
|
|
+ " <td>1B</td>\n",
|
|
|
+ " <td>968-874</td>\n",
|
|
|
+ " <td>2017-05-24</td>\n",
|
|
|
+ " <td>14:30:00</td>\n",
|
|
|
+ " <td>Eduardo</td>\n",
|
|
|
+ " <td>3</td>\n",
|
|
|
+ " <td>VR</td>\n",
|
|
|
+ " <td>Left</td>\n",
|
|
|
+ " <td>Wall</td>\n",
|
|
|
+ " <td>Right</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>3</th>\n",
|
|
|
+ " <td>1B</td>\n",
|
|
|
+ " <td>719-A78</td>\n",
|
|
|
+ " <td>2017-05-25</td>\n",
|
|
|
+ " <td>17:50:00</td>\n",
|
|
|
+ " <td>Nick</td>\n",
|
|
|
+ " <td>1</td>\n",
|
|
|
+ " <td>Static</td>\n",
|
|
|
+ " <td>Right</td>\n",
|
|
|
+ " <td>Center</td>\n",
|
|
|
+ " <td>Left</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>4</th>\n",
|
|
|
+ " <td>1B</td>\n",
|
|
|
+ " <td>719-A78</td>\n",
|
|
|
+ " <td>2017-05-25</td>\n",
|
|
|
+ " <td>17:50:00</td>\n",
|
|
|
+ " <td>Nick</td>\n",
|
|
|
+ " <td>2</td>\n",
|
|
|
+ " <td>Real</td>\n",
|
|
|
+ " <td>Left</td>\n",
|
|
|
+ " <td>Wall</td>\n",
|
|
|
+ " <td>Right</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " </tbody>\n",
|
|
|
+ "</table>\n",
|
|
|
+ "</div>"
|
|
|
+ ],
|
|
|
+ "text/plain": [
|
|
|
+ " Rat SessionID Date Time Experimenter Phase Condition CliffSide \\\n",
|
|
|
+ "0 1B 968-874 2017-05-24 14:30:00 Eduardo 1 Real Left \n",
|
|
|
+ "1 1B 968-874 2017-05-24 14:30:00 Eduardo 2 Static Right \n",
|
|
|
+ "2 1B 968-874 2017-05-24 14:30:00 Eduardo 3 VR Left \n",
|
|
|
+ "3 1B 719-A78 2017-05-25 17:50:00 Nick 1 Static Right \n",
|
|
|
+ "4 1B 719-A78 2017-05-25 17:50:00 Nick 2 Real Left \n",
|
|
|
+ "\n",
|
|
|
+ " BoxSide JumpSide \n",
|
|
|
+ "0 Center Right \n",
|
|
|
+ "1 Center Right \n",
|
|
|
+ "2 Wall Right \n",
|
|
|
+ "3 Center Left \n",
|
|
|
+ "4 Wall Right "
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "execution_count": 84,
|
|
|
+ "metadata": {},
|
|
|
+ "output_type": "execute_result"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "fname = '../../logs/CliffExpLog_Jun21_sorted.xlsx'\n",
|
|
|
+ "df = pd.read_excel(fname)\n",
|
|
|
+ "df.Date = pd.to_datetime(df.Date)\n",
|
|
|
+ "del df['Comments']\n",
|
|
|
+ "df.head()"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 25,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "data": {
|
|
|
+ "text/plain": [
|
|
|
+ "'Incomplete Records: 14'"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "execution_count": 25,
|
|
|
+ "metadata": {},
|
|
|
+ "output_type": "execute_result"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "\"Incomplete Records: {}\".format(np.any(df.isnull(), axis=1).sum())"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 87,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "df = df[df.JumpSide.notnull()]"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {},
|
|
|
+ "source": [
|
|
|
+ "## Look for Main Effects"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 88,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "data": {
|
|
|
+ "text/html": [
|
|
|
+ "<div>\n",
|
|
|
+ "<style>\n",
|
|
|
+ " .dataframe thead tr:only-child th {\n",
|
|
|
+ " text-align: right;\n",
|
|
|
+ " }\n",
|
|
|
+ "\n",
|
|
|
+ " .dataframe thead th {\n",
|
|
|
+ " text-align: left;\n",
|
|
|
+ " }\n",
|
|
|
+ "\n",
|
|
|
+ " .dataframe tbody tr th {\n",
|
|
|
+ " vertical-align: top;\n",
|
|
|
+ " }\n",
|
|
|
+ "</style>\n",
|
|
|
+ "<table border=\"1\" class=\"dataframe\">\n",
|
|
|
+ " <thead>\n",
|
|
|
+ " <tr style=\"text-align: right;\">\n",
|
|
|
+ " <th></th>\n",
|
|
|
+ " <th>Rat</th>\n",
|
|
|
+ " <th>SessionID</th>\n",
|
|
|
+ " <th>Date</th>\n",
|
|
|
+ " <th>Time</th>\n",
|
|
|
+ " <th>Experimenter</th>\n",
|
|
|
+ " <th>Phase</th>\n",
|
|
|
+ " <th>Condition</th>\n",
|
|
|
+ " <th>CliffSide</th>\n",
|
|
|
+ " <th>BoxSide</th>\n",
|
|
|
+ " <th>JumpSide</th>\n",
|
|
|
+ " <th>JumpedRight</th>\n",
|
|
|
+ " <th>JumpedToCliff</th>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " </thead>\n",
|
|
|
+ " <tbody>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>0</th>\n",
|
|
|
+ " <td>1B</td>\n",
|
|
|
+ " <td>968-874</td>\n",
|
|
|
+ " <td>2017-05-24</td>\n",
|
|
|
+ " <td>14:30:00</td>\n",
|
|
|
+ " <td>Eduardo</td>\n",
|
|
|
+ " <td>1</td>\n",
|
|
|
+ " <td>Real</td>\n",
|
|
|
+ " <td>Left</td>\n",
|
|
|
+ " <td>Center</td>\n",
|
|
|
+ " <td>Right</td>\n",
|
|
|
+ " <td>1</td>\n",
|
|
|
+ " <td>False</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>1</th>\n",
|
|
|
+ " <td>1B</td>\n",
|
|
|
+ " <td>968-874</td>\n",
|
|
|
+ " <td>2017-05-24</td>\n",
|
|
|
+ " <td>14:30:00</td>\n",
|
|
|
+ " <td>Eduardo</td>\n",
|
|
|
+ " <td>2</td>\n",
|
|
|
+ " <td>Static</td>\n",
|
|
|
+ " <td>Right</td>\n",
|
|
|
+ " <td>Center</td>\n",
|
|
|
+ " <td>Right</td>\n",
|
|
|
+ " <td>1</td>\n",
|
|
|
+ " <td>True</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>2</th>\n",
|
|
|
+ " <td>1B</td>\n",
|
|
|
+ " <td>968-874</td>\n",
|
|
|
+ " <td>2017-05-24</td>\n",
|
|
|
+ " <td>14:30:00</td>\n",
|
|
|
+ " <td>Eduardo</td>\n",
|
|
|
+ " <td>3</td>\n",
|
|
|
+ " <td>VR</td>\n",
|
|
|
+ " <td>Left</td>\n",
|
|
|
+ " <td>Wall</td>\n",
|
|
|
+ " <td>Right</td>\n",
|
|
|
+ " <td>1</td>\n",
|
|
|
+ " <td>False</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>3</th>\n",
|
|
|
+ " <td>1B</td>\n",
|
|
|
+ " <td>719-A78</td>\n",
|
|
|
+ " <td>2017-05-25</td>\n",
|
|
|
+ " <td>17:50:00</td>\n",
|
|
|
+ " <td>Nick</td>\n",
|
|
|
+ " <td>1</td>\n",
|
|
|
+ " <td>Static</td>\n",
|
|
|
+ " <td>Right</td>\n",
|
|
|
+ " <td>Center</td>\n",
|
|
|
+ " <td>Left</td>\n",
|
|
|
+ " <td>0</td>\n",
|
|
|
+ " <td>False</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>4</th>\n",
|
|
|
+ " <td>1B</td>\n",
|
|
|
+ " <td>719-A78</td>\n",
|
|
|
+ " <td>2017-05-25</td>\n",
|
|
|
+ " <td>17:50:00</td>\n",
|
|
|
+ " <td>Nick</td>\n",
|
|
|
+ " <td>2</td>\n",
|
|
|
+ " <td>Real</td>\n",
|
|
|
+ " <td>Left</td>\n",
|
|
|
+ " <td>Wall</td>\n",
|
|
|
+ " <td>Right</td>\n",
|
|
|
+ " <td>1</td>\n",
|
|
|
+ " <td>False</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " </tbody>\n",
|
|
|
+ "</table>\n",
|
|
|
+ "</div>"
|
|
|
+ ],
|
|
|
+ "text/plain": [
|
|
|
+ " Rat SessionID Date Time Experimenter Phase Condition CliffSide \\\n",
|
|
|
+ "0 1B 968-874 2017-05-24 14:30:00 Eduardo 1 Real Left \n",
|
|
|
+ "1 1B 968-874 2017-05-24 14:30:00 Eduardo 2 Static Right \n",
|
|
|
+ "2 1B 968-874 2017-05-24 14:30:00 Eduardo 3 VR Left \n",
|
|
|
+ "3 1B 719-A78 2017-05-25 17:50:00 Nick 1 Static Right \n",
|
|
|
+ "4 1B 719-A78 2017-05-25 17:50:00 Nick 2 Real Left \n",
|
|
|
+ "\n",
|
|
|
+ " BoxSide JumpSide JumpedRight JumpedToCliff \n",
|
|
|
+ "0 Center Right 1 False \n",
|
|
|
+ "1 Center Right 1 True \n",
|
|
|
+ "2 Wall Right 1 False \n",
|
|
|
+ "3 Center Left 0 False \n",
|
|
|
+ "4 Wall Right 1 False "
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "execution_count": 88,
|
|
|
+ "metadata": {},
|
|
|
+ "output_type": "execute_result"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "df['JumpedRight'] = df.JumpSide.apply(lambda s: 1 if 'R' in s else 0)\n",
|
|
|
+ "df['JumpedToCliff'] = df.CliffSide == df.JumpSide\n",
|
|
|
+ "df.head()"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 89,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "name": "stdout",
|
|
|
+ "output_type": "stream",
|
|
|
+ "text": [
|
|
|
+ "Optimization terminated successfully.\n",
|
|
|
+ " Current function value: 0.636950\n",
|
|
|
+ " Iterations 5\n"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "data": {
|
|
|
+ "text/html": [
|
|
|
+ "<table class=\"simpletable\">\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Model:</td> <td>Logit</td> <td>Pseudo R-squared:</td> <td>0.079</td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Dependent Variable:</td> <td>JumpedRight</td> <td>AIC:</td> <td>147.9506</td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Date:</td> <td>2017-06-27 18:36</td> <td>BIC:</td> <td>153.4054</td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>No. Observations:</td> <td>113</td> <td>Log-Likelihood:</td> <td>-71.975</td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Df Model:</td> <td>1</td> <td>LL-Null:</td> <td>-78.109</td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Df Residuals:</td> <td>111</td> <td>LLR p-value:</td> <td>0.00046111</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Converged:</td> <td>1.0000</td> <td>Scale:</td> <td>1.0000</td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>No. Iterations:</td> <td>5.0000</td> <td></td> <td></td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "</table>\n",
|
|
|
+ "<table class=\"simpletable\">\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td></td> <th>Coef.</th> <th>Std.Err.</th> <th>z</th> <th>P>|z|</th> <th>[0.025</th> <th>0.975]</th> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <th>Intercept</th> <td>0.7985</td> <td>0.2838</td> <td>2.8134</td> <td>0.0049</td> <td>0.2422</td> <td>1.3548</td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <th>C(CliffSide)[T.Right]</th> <td>-1.3581</td> <td>0.3989</td> <td>-3.4046</td> <td>0.0007</td> <td>-2.1400</td> <td>-0.5763</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "</table>"
|
|
|
+ ],
|
|
|
+ "text/plain": [
|
|
|
+ "<class 'statsmodels.iolib.summary2.Summary'>\n",
|
|
|
+ "\"\"\"\n",
|
|
|
+ " Results: Logit\n",
|
|
|
+ "=====================================================================\n",
|
|
|
+ "Model: Logit Pseudo R-squared: 0.079 \n",
|
|
|
+ "Dependent Variable: JumpedRight AIC: 147.9506 \n",
|
|
|
+ "Date: 2017-06-27 18:36 BIC: 153.4054 \n",
|
|
|
+ "No. Observations: 113 Log-Likelihood: -71.975 \n",
|
|
|
+ "Df Model: 1 LL-Null: -78.109 \n",
|
|
|
+ "Df Residuals: 111 LLR p-value: 0.00046111\n",
|
|
|
+ "Converged: 1.0000 Scale: 1.0000 \n",
|
|
|
+ "No. Iterations: 5.0000 \n",
|
|
|
+ "---------------------------------------------------------------------\n",
|
|
|
+ " Coef. Std.Err. z P>|z| [0.025 0.975]\n",
|
|
|
+ "---------------------------------------------------------------------\n",
|
|
|
+ "Intercept 0.7985 0.2838 2.8134 0.0049 0.2422 1.3548\n",
|
|
|
+ "C(CliffSide)[T.Right] -1.3581 0.3989 -3.4046 0.0007 -2.1400 -0.5763\n",
|
|
|
+ "=====================================================================\n",
|
|
|
+ "\n",
|
|
|
+ "\"\"\""
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "execution_count": 89,
|
|
|
+ "metadata": {},
|
|
|
+ "output_type": "execute_result"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "smf.Logit.from_formula('JumpedRight ~ C(CliffSide)', data=df[df.Condition == 'Real']).fit().summary2()"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 90,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "name": "stdout",
|
|
|
+ "output_type": "stream",
|
|
|
+ "text": [
|
|
|
+ "Optimization terminated successfully.\n",
|
|
|
+ " Current function value: 0.656475\n",
|
|
|
+ " Iterations 5\n"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "data": {
|
|
|
+ "text/html": [
|
|
|
+ "<table class=\"simpletable\">\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Model:</td> <td>Logit</td> <td>Pseudo R-squared:</td> <td>0.039</td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Dependent Variable:</td> <td>JumpedRight</td> <td>AIC:</td> <td>153.6763</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Date:</td> <td>2017-06-27 18:36</td> <td>BIC:</td> <td>159.1487</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>No. Observations:</td> <td>114</td> <td>Log-Likelihood:</td> <td>-74.838</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Df Model:</td> <td>1</td> <td>LL-Null:</td> <td>-77.892</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Df Residuals:</td> <td>112</td> <td>LLR p-value:</td> <td>0.013455</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Converged:</td> <td>1.0000</td> <td>Scale:</td> <td>1.0000</td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>No. Iterations:</td> <td>5.0000</td> <td></td> <td></td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "</table>\n",
|
|
|
+ "<table class=\"simpletable\">\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td></td> <th>Coef.</th> <th>Std.Err.</th> <th>z</th> <th>P>|z|</th> <th>[0.025</th> <th>0.975]</th> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <th>Intercept</th> <td>0.7732</td> <td>0.2850</td> <td>2.7134</td> <td>0.0067</td> <td>0.2147</td> <td>1.3317</td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <th>C(CliffSide)[T.Right]</th> <td>-0.9491</td> <td>0.3898</td> <td>-2.4350</td> <td>0.0149</td> <td>-1.7130</td> <td>-0.1852</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "</table>"
|
|
|
+ ],
|
|
|
+ "text/plain": [
|
|
|
+ "<class 'statsmodels.iolib.summary2.Summary'>\n",
|
|
|
+ "\"\"\"\n",
|
|
|
+ " Results: Logit\n",
|
|
|
+ "=====================================================================\n",
|
|
|
+ "Model: Logit Pseudo R-squared: 0.039 \n",
|
|
|
+ "Dependent Variable: JumpedRight AIC: 153.6763\n",
|
|
|
+ "Date: 2017-06-27 18:36 BIC: 159.1487\n",
|
|
|
+ "No. Observations: 114 Log-Likelihood: -74.838 \n",
|
|
|
+ "Df Model: 1 LL-Null: -77.892 \n",
|
|
|
+ "Df Residuals: 112 LLR p-value: 0.013455\n",
|
|
|
+ "Converged: 1.0000 Scale: 1.0000 \n",
|
|
|
+ "No. Iterations: 5.0000 \n",
|
|
|
+ "---------------------------------------------------------------------\n",
|
|
|
+ " Coef. Std.Err. z P>|z| [0.025 0.975]\n",
|
|
|
+ "---------------------------------------------------------------------\n",
|
|
|
+ "Intercept 0.7732 0.2850 2.7134 0.0067 0.2147 1.3317\n",
|
|
|
+ "C(CliffSide)[T.Right] -0.9491 0.3898 -2.4350 0.0149 -1.7130 -0.1852\n",
|
|
|
+ "=====================================================================\n",
|
|
|
+ "\n",
|
|
|
+ "\"\"\""
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "execution_count": 90,
|
|
|
+ "metadata": {},
|
|
|
+ "output_type": "execute_result"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "smf.Logit.from_formula('JumpedRight ~ C(CliffSide)', data=df[df.Condition == 'VR']).fit().summary2()"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 91,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "name": "stdout",
|
|
|
+ "output_type": "stream",
|
|
|
+ "text": [
|
|
|
+ "Optimization terminated successfully.\n",
|
|
|
+ " Current function value: 0.688921\n",
|
|
|
+ " Iterations 4\n"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "data": {
|
|
|
+ "text/html": [
|
|
|
+ "<table class=\"simpletable\">\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Model:</td> <td>Logit</td> <td>Pseudo R-squared:</td> <td>0.000</td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Dependent Variable:</td> <td>JumpedRight</td> <td>AIC:</td> <td>155.5626</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Date:</td> <td>2017-06-27 18:37</td> <td>BIC:</td> <td>160.9635</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>No. Observations:</td> <td>110</td> <td>Log-Likelihood:</td> <td>-75.781</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Df Model:</td> <td>1</td> <td>LL-Null:</td> <td>-75.791</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Df Residuals:</td> <td>108</td> <td>LLR p-value:</td> <td>0.88908</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>Converged:</td> <td>1.0000</td> <td>Scale:</td> <td>1.0000</td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td>No. Iterations:</td> <td>4.0000</td> <td></td> <td></td> \n",
|
|
|
+ "</tr>\n",
|
|
|
+ "</table>\n",
|
|
|
+ "<table class=\"simpletable\">\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <td></td> <th>Coef.</th> <th>Std.Err.</th> <th>z</th> <th>P>|z|</th> <th>[0.025</th> <th>0.975]</th>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <th>Intercept</th> <td>0.1542</td> <td>0.2782</td> <td>0.5542</td> <td>0.5795</td> <td>-0.3911</td> <td>0.6994</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "<tr>\n",
|
|
|
+ " <th>C(CliffSide)[T.Right]</th> <td>0.0535</td> <td>0.3835</td> <td>0.1395</td> <td>0.8891</td> <td>-0.6982</td> <td>0.8052</td>\n",
|
|
|
+ "</tr>\n",
|
|
|
+ "</table>"
|
|
|
+ ],
|
|
|
+ "text/plain": [
|
|
|
+ "<class 'statsmodels.iolib.summary2.Summary'>\n",
|
|
|
+ "\"\"\"\n",
|
|
|
+ " Results: Logit\n",
|
|
|
+ "==================================================================\n",
|
|
|
+ "Model: Logit Pseudo R-squared: 0.000 \n",
|
|
|
+ "Dependent Variable: JumpedRight AIC: 155.5626\n",
|
|
|
+ "Date: 2017-06-27 18:37 BIC: 160.9635\n",
|
|
|
+ "No. Observations: 110 Log-Likelihood: -75.781 \n",
|
|
|
+ "Df Model: 1 LL-Null: -75.791 \n",
|
|
|
+ "Df Residuals: 108 LLR p-value: 0.88908 \n",
|
|
|
+ "Converged: 1.0000 Scale: 1.0000 \n",
|
|
|
+ "No. Iterations: 4.0000 \n",
|
|
|
+ "------------------------------------------------------------------\n",
|
|
|
+ " Coef. Std.Err. z P>|z| [0.025 0.975]\n",
|
|
|
+ "------------------------------------------------------------------\n",
|
|
|
+ "Intercept 0.1542 0.2782 0.5542 0.5795 -0.3911 0.6994\n",
|
|
|
+ "C(CliffSide)[T.Right] 0.0535 0.3835 0.1395 0.8891 -0.6982 0.8052\n",
|
|
|
+ "==================================================================\n",
|
|
|
+ "\n",
|
|
|
+ "\"\"\""
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "execution_count": 91,
|
|
|
+ "metadata": {},
|
|
|
+ "output_type": "execute_result"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "smf.Logit.from_formula('JumpedRight ~ C(CliffSide)', data=df[df.Condition == 'Static']).fit().summary2()"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {},
|
|
|
+ "source": [
|
|
|
+ "### Same Analysis, using binomial test and fisher's Exact"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 94,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "name": "stderr",
|
|
|
+ "output_type": "stream",
|
|
|
+ "text": [
|
|
|
+ "/home/nickdg/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:5: FutureWarning: using a dict on a Series for aggregation\n",
|
|
|
+ "is deprecated and will be removed in a future version\n",
|
|
|
+ " \"\"\"\n"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "data": {
|
|
|
+ "text/html": [
|
|
|
+ "<div>\n",
|
|
|
+ "<style>\n",
|
|
|
+ " .dataframe thead tr:only-child th {\n",
|
|
|
+ " text-align: right;\n",
|
|
|
+ " }\n",
|
|
|
+ "\n",
|
|
|
+ " .dataframe thead th {\n",
|
|
|
+ " text-align: left;\n",
|
|
|
+ " }\n",
|
|
|
+ "\n",
|
|
|
+ " .dataframe tbody tr th {\n",
|
|
|
+ " vertical-align: top;\n",
|
|
|
+ " }\n",
|
|
|
+ "</style>\n",
|
|
|
+ "<table border=\"1\" class=\"dataframe\">\n",
|
|
|
+ " <thead>\n",
|
|
|
+ " <tr style=\"text-align: right;\">\n",
|
|
|
+ " <th></th>\n",
|
|
|
+ " <th>CliffJumps</th>\n",
|
|
|
+ " <th>SafeJumps</th>\n",
|
|
|
+ " <th>TotalJumps</th>\n",
|
|
|
+ " <th>p</th>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>Condition</th>\n",
|
|
|
+ " <th></th>\n",
|
|
|
+ " <th></th>\n",
|
|
|
+ " <th></th>\n",
|
|
|
+ " <th></th>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " </thead>\n",
|
|
|
+ " <tbody>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>Real</th>\n",
|
|
|
+ " <td>38</td>\n",
|
|
|
+ " <td>75</td>\n",
|
|
|
+ " <td>113</td>\n",
|
|
|
+ " <td>0.000641</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>Static</th>\n",
|
|
|
+ " <td>56</td>\n",
|
|
|
+ " <td>54</td>\n",
|
|
|
+ " <td>110</td>\n",
|
|
|
+ " <td>0.924097</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>VR</th>\n",
|
|
|
+ " <td>44</td>\n",
|
|
|
+ " <td>70</td>\n",
|
|
|
+ " <td>114</td>\n",
|
|
|
+ " <td>0.018811</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " </tbody>\n",
|
|
|
+ "</table>\n",
|
|
|
+ "</div>"
|
|
|
+ ],
|
|
|
+ "text/plain": [
|
|
|
+ " CliffJumps SafeJumps TotalJumps p\n",
|
|
|
+ "Condition \n",
|
|
|
+ "Real 38 75 113 0.000641\n",
|
|
|
+ "Static 56 54 110 0.924097\n",
|
|
|
+ "VR 44 70 114 0.018811"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "execution_count": 94,
|
|
|
+ "metadata": {},
|
|
|
+ "output_type": "execute_result"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "conditions = df.groupby('Condition')\n",
|
|
|
+ "cont_tab = conditions.JumpedToCliff.agg({'CliffJumps': lambda x: x.sum(), \n",
|
|
|
+ " 'SafeJumps': lambda x: len(x) - x.sum(),\n",
|
|
|
+ " 'TotalJumps': lambda x: len(x), \n",
|
|
|
+ " 'p': lambda x: stats.binom_test(x.sum(), len(x))\n",
|
|
|
+ " })\n",
|
|
|
+ "cont_tab"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 99,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "data": {
|
|
|
+ "text/plain": [
|
|
|
+ "(7.2781524252531495,\n",
|
|
|
+ " 0.026276606754669887,\n",
|
|
|
+ " 2,\n",
|
|
|
+ " array([[ 46.27299703, 66.72700297],\n",
|
|
|
+ " [ 45.04451039, 64.95548961],\n",
|
|
|
+ " [ 46.68249258, 67.31750742]]))"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "execution_count": 99,
|
|
|
+ "metadata": {},
|
|
|
+ "output_type": "execute_result"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "stats.chi2_contingency(cont_tab[['CliffJumps', 'SafeJumps']].values)"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 107,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "data": {
|
|
|
+ "text/html": [
|
|
|
+ "<div>\n",
|
|
|
+ "<style>\n",
|
|
|
+ " .dataframe thead tr:only-child th {\n",
|
|
|
+ " text-align: right;\n",
|
|
|
+ " }\n",
|
|
|
+ "\n",
|
|
|
+ " .dataframe thead th {\n",
|
|
|
+ " text-align: left;\n",
|
|
|
+ " }\n",
|
|
|
+ "\n",
|
|
|
+ " .dataframe tbody tr th {\n",
|
|
|
+ " vertical-align: top;\n",
|
|
|
+ " }\n",
|
|
|
+ "</style>\n",
|
|
|
+ "<table border=\"1\" class=\"dataframe\">\n",
|
|
|
+ " <thead>\n",
|
|
|
+ " <tr style=\"text-align: right;\">\n",
|
|
|
+ " <th></th>\n",
|
|
|
+ " <th>CliffJumps</th>\n",
|
|
|
+ " <th>SafeJumps</th>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>Condition</th>\n",
|
|
|
+ " <th></th>\n",
|
|
|
+ " <th></th>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " </thead>\n",
|
|
|
+ " <tbody>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>Static</th>\n",
|
|
|
+ " <td>56</td>\n",
|
|
|
+ " <td>54</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " <tr>\n",
|
|
|
+ " <th>VR</th>\n",
|
|
|
+ " <td>44</td>\n",
|
|
|
+ " <td>70</td>\n",
|
|
|
+ " </tr>\n",
|
|
|
+ " </tbody>\n",
|
|
|
+ "</table>\n",
|
|
|
+ "</div>"
|
|
|
+ ],
|
|
|
+ "text/plain": [
|
|
|
+ " CliffJumps SafeJumps\n",
|
|
|
+ "Condition \n",
|
|
|
+ "Static 56 54\n",
|
|
|
+ "VR 44 70"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "execution_count": 107,
|
|
|
+ "metadata": {},
|
|
|
+ "output_type": "execute_result"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "vr_cont_tab = cont_tab.iloc[1:][['CliffJumps', 'SafeJumps']]\n",
|
|
|
+ "vr_cont_tab"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": 108,
|
|
|
+ "metadata": {},
|
|
|
+ "outputs": [
|
|
|
+ {
|
|
|
+ "data": {
|
|
|
+ "text/plain": [
|
|
|
+ "(1.6498316498316499, 0.080430898199951001)"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ "execution_count": 108,
|
|
|
+ "metadata": {},
|
|
|
+ "output_type": "execute_result"
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "source": [
|
|
|
+ "stats.fisher_exact(vr_cont_tab)"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "markdown",
|
|
|
+ "metadata": {},
|
|
|
+ "source": [
|
|
|
+ "## Look for Interaction between VR and Static Conditions"
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ {
|
|
|
+ "cell_type": "code",
|
|
|
+ "execution_count": null,
|
|
|
+ "metadata": {
|
|
|
+ "collapsed": true
|
|
|
+ },
|
|
|
+ "outputs": [],
|
|
|
+ "source": [
|
|
|
+ "smf.Logit.from_formula('JumpedRight ~ C(CliffSide)', data=df[df.Condition == 'Static']).fit().summary2()"
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ "metadata": {
|
|
|
+ "kernelspec": {
|
|
|
+ "display_name": "Python 3",
|
|
|
+ "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.6.1"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "nbformat": 4,
|
|
|
+ "nbformat_minor": 2
|
|
|
+}
|