--- a +++ b/talk/.ipynb_checkpoints/GrahamGroup-checkpoint.ipynb @@ -0,0 +1,1647 @@ +{ + "metadata": { + "celltoolbar": "Slideshow", + "name": "", + "signature": "sha256:683ceb13e563077b8da74ca91d75c910b368c1da6290dcded253f1373c1c887b" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Robust Extraction of Quantitative Information from Histology Images" + ] + }, + { + "cell_type": "heading", + "level": 4, + "metadata": {}, + "source": [ + "Quentin Caudron\n", + "<br /><br />\n", + "\n", + "Romain Garnier\n", + "<br /><br />\n", + "\n", + "*with Bryan Grenfell and Andrea Graham*" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Outline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Image processing\n", + "- Extracted measures\n", + "- Preliminary analysis\n", + "- Future directions" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "source": [ + "4. Age as random effect <---\n", + "\n", + "[\"interface_hepatitis\", \"confluent_necrosis\", \"portal_inflammation\", \"ln_ap_ri\"]" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def normalise(df, skip = []) :\n", + "\tfor i in df.columns :\n", + "\t\tif i not in skip :\n", + "\t\t\tdf[i] -= df[i].mean()\n", + "\t\t\tdf[i] /= df[i].std()\n", + "\treturn df\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "def rescale(df, skip = []) :\n", + " for i in df.columns :\n", + " if i not in skip :\n", + " df[i] -= df[i].min()\n", + " df[i] /= df[i].max()\n", + " return df\n", + "\n", + "\n", + "\n", + "# Remove a layer from a list\n", + "def delayer(m) :\n", + "\tout = []\n", + "\tfor i in m :\n", + "\t\tif isinstance(i, list) :\n", + "\t\t\tfor j in i :\n", + "\t\t\t\tout.append(j)\n", + "\t\telse :\n", + "\t\t\tout.append(i)\n", + "\treturn out\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "# Remove all layers from a list\n", + "def flatten(m) :\n", + "\tout = m[:]\n", + "\n", + "\twhile out != delayer(out) :\n", + "\t\tout = delayer(out)\n", + "\n", + "\treturn out\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "# Generate all combinations of objects in a list\n", + "def combinatorial(l) :\n", + "\tout = []\n", + "\n", + "\tfor numel in range(len(l)) :\n", + "\t\tfor i in itertools.combinations(l, numel+1) :\n", + "\t\t\tout.append(list(i))\n", + "\n", + "\treturn out\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "def pcaplot(df) :\n", + "\n", + "\t# PCA\n", + "\tpca = decomposition.PCA(whiten = True)\n", + "\tpca.fit(df)\n", + "\tp1 = pca.components_[0] / np.abs(pca.components_[0]).max() * np.sqrt(2)/2\n", + "\tp2 = pca.components_[1] / np.abs(pca.components_[1]).max() * np.sqrt(2)/2\n", + "\n", + "\t# Normalise\n", + "\tnorms = np.max([np.sqrt((np.array(zip(p1, p2)[i])**2).sum()) for i in range(len(p1))])\n", + "\tc = plt.Circle( (0, 0), radius = 1, alpha = 0.2)\n", + "\tplt.axes(aspect = 1)\n", + "\tplt.gca().add_artist(c)\n", + "\n", + "\tplt.scatter(p1 / norms, p2 / norms)\n", + "\tplt.xlim([-1, 1])\n", + "\tplt.ylim([-1, 1])\n", + "\n", + "\tfor i, text in enumerate(df.columns) :\n", + "\t\tplt.annotate(text, xy = [p1[i], p2[i]])\n", + "\n", + "\tplt.tight_layout()\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "def test_all_linear(df, y, x, return_significant = False, group = None) :\n", + "\n", + " # All possible combinations of independent variables\n", + "\tindependent = combinatorial(x)\n", + "\n", + "\tfits = {}\n", + "\tpval = {}\n", + "\tlinmodels = {}\n", + "\tqsum = {}\n", + "\taic = {}\n", + "\n", + "\t# For all dependent variables, one at a time\n", + "\tfor dependent in y :\n", + "\n", + "\t\tprint \"Fitting for %s.\" % dependent\n", + "\n", + "\t\t# For all combinations of independent variables\n", + "\t\tfor covariate in independent :\n", + "\n", + "\t\t\t# Standard mixed model\n", + "\t\t\tif group is None :\n", + "\n", + "\t\t\t\t# Fit a linear model\n", + "\t\t\t\tsubset = delayer([covariate, dependent])\n", + "\t\t\t\tdf2 = df[delayer(subset)].dropna()\n", + "\t\t\t\tdf2[\"Intercept\"] = np.ones(len(df2))\n", + " \n", + "\t\t\t\tols = sm.GLS(endog = df2[dependent], exog = df2[delayer([covariate, \"Intercept\"])]).fit()\n", + "\n", + "\t\t\t\t# Save the results\n", + "\t\t\t\tif (return_significant and ols.f_pvalue < 0.05) or (not return_significant) :\n", + "\t\t\t\t\tlinmodels.setdefault(dependent, []).append(ols)\n", + "\t\t\t\t\tfits.setdefault(dependent, []).append(ols.rsquared)\n", + "\t\t\t\t\tpval.setdefault(dependent, []).append(ols.f_pvalue)\n", + "\t\t\t\t\taic.setdefault(dependent, []).append(ols.aic)\n", + "\n", + "\n", + "\t\t\t# Mixed effects model\n", + "\t\t\telse :\n", + "\t\t\t\tsubset = delayer([covariate, dependent, group])\n", + "\t\t\t\tdf2 = df[delayer(subset)].dropna()\n", + "\n", + "\t\t\t\t# Fit a mixed effects model\n", + "\t\t\t\tols = MixedLM(endog = df2[dependent], exog = df2[covariate], groups = df2[group]).fit()\n", + "\n", + "\t\t\t\t# Calculate AIC\n", + "\t\t\t\tlinmodels.setdefault(dependent, []).append(ols)\n", + "\t\t\t\tfits.setdefault(dependent, []).append(2 * (ols.k_fe + 1) - 2 * ols.llf)\n", + "\t\t\t\tpval.setdefault(dependent, []).append(ols.pvalues)\n", + "\n", + "\tif group is not None :\n", + "\t\tfor i in y :\n", + "\t\t\tf = np.array(fits[i])\n", + "\t\t\tmodels = np.array(linmodels[i])\n", + "\t\t\tidx = np.where(f - f.min() <= 2)[0]\n", + "\t\t\tbestmodelDoF = [j.k_fe for j in np.array(linmodels[i])[idx]]\n", + "\t\t\tbestmodels = [idx[j] for j in np.where(bestmodelDoF == np.min(bestmodelDoF))[0]]\n", + "\t\t\tqsum[i] = models[idx[np.where(f[bestmodels] == np.min(f[bestmodels]))]]\n", + "\n", + "\n", + "\t\treturn linmodels, fits, pval, qsum\n", + "\n", + "\treturn linmodels, fits, pval, aic\n", + "\n", + "\t\n", + "\t\t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "def summary(models) :\n", + "\n", + "\t# Generate list of everything\n", + "\tr2 = np.array([m.r2 for dependent in models.keys() for m in models[dependent]])\n", + "\tp = np.array([m.f_stat[\"p-value\"] for dependent in models.keys() for m in models[dependent]])\n", + "\tmod = np.array([m for dependent in models.keys() for m in models[dependent]])\n", + "\tdependent = np.array([dependent for dependent in models.keys() for m in models[dependent]])\n", + "\n", + "\t# Sort by R2\n", + "\tidx = np.argsort(r2)[::-1]\n", + "\n", + "\t# Output string\n", + "\ts = \"%d significant regressions.\\n\\n\" % len(r2)\n", + "\ts += \"Ten most correlated :\\n\\n\"\n", + "\n", + "\t# Print a summary of the top ten correlations\n", + "\tfor i in idx[:10] :\n", + "\t\ts += (\"%s ~ %s\\n\" % (dependent[i], \" + \".join(mod[i].x.columns[:-1])))\n", + "\t\ts += (\"R^2 = %f\\tp = %f\\n\\n\" % (r2[i], p[i]))\n", + "\n", + "\tprint s\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "def rstr(y, x) :\n", + " formatstr = \"%s ~ \" % y\n", + " for i in x[:-1] :\n", + " formatstr += str(i)\n", + " formatstr += \" + \"\n", + " formatstr += str(x[-1])\n", + " return formatstr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "prompt_number": 3 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import numpy as np\n", + "from sklearn.neighbors import KernelDensity\n", + "from matplotlib import rcParams\n", + "import matplotlib.pyplot as plt\n", + "import seaborn\n", + "import pandas as pd\n", + "import itertools\n", + "from sklearn import linear_model, ensemble, decomposition, cross_validation, preprocessing\n", + "from statsmodels.regression.mixed_linear_model import MixedLM\n", + "import statsmodels.api as sm\n", + "from statsmodels.regression.linear_model import OLSResults\n", + "from statsmodels.tools.tools import add_constant\n", + "\n", + "\n", + "%matplotlib inline\n", + "rcParams[\"figure.figsize\"] = (14, 8)\n", + "\n", + "\n", + "# RAW DATA\n", + "\n", + "raw_physical = pd.read_csv(\"../data/physical.csv\")\n", + "raw_histo = pd.read_csv(\"../data/tawfik.csv\")\n", + "ent = pd.read_csv(\"../4x/results/entropy.csv\").drop([\"Unnamed: 0\"], 1)\n", + "foci = pd.read_csv(\"../4x/results/foci.csv\").drop([\"Unnamed: 0\"], 1)\n", + "lac = pd.read_csv(\"../4x/results/normalised_lacunarity.csv\").drop([\"Unnamed: 0\"], 1)\n", + "gabor = pd.read_csv(\"../4x/results/gabor_filters.csv\").drop([\"Unnamed: 0\"], 1)\n", + "ts = pd.read_csv(\"../4x/results/tissue_sinusoid_ratio.csv\").drop([\"Unnamed: 0\"], 1)\n", + "\n", + "raw_image = pd.merge(lac, ent,\n", + "\ton=[\"Sheep\", \"Image\"]).merge(foci, \n", + "\ton=[\"Sheep\", \"Image\"]).merge(gabor,\n", + "\ton=[\"Sheep\", \"Image\"]).merge(ts, \n", + " on=[\"Sheep\", \"Image\"])\n", + "raw_image.rename(columns = {\t\"meanSize\" : \"FociSize\", \n", + "\t\t\t\t\t\t\t\t\"TSRatio\" : \"TissueToSinusoid\",\n", + "\t\t\t\t\t\t\t\t\"Count\" : \"FociCount\" }, inplace=True)\n", + "\n", + "\n", + "\n", + "# CLEAN DATA\n", + "\n", + "physcols = [\"Weight\", \"Sex\", \"AgeAtDeath\", \"Foreleg\", \"Hindleg\"]\n", + "imagecols = [\"Entropy\", \"Lacunarity\", \"Inflammation\", \"Scale\", \"Directionality\", \"FociCount\", \"FociSize\", \"TissueToSinusoid\"]\n", + "histcols = [\"Lobular_collapse\", \"Interface_hepatitis\", \"Confluent_necrosis\", \"Ln_ap_ri\", \"Portal_inflammation\", \"BD_hyperplasia\", \"Fibrosis\", \"TawfikTotal\", \"Mean_hep_size\", \"Min_hep_size\", \"Max_hep_size\"]\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "# IMAGE\n", + "\n", + "# Set FociSize to zero if FociCount is zero\n", + "# Drop stdSize\n", + "image = raw_image\n", + "image = image.drop(\"stdSize\", 1)\n", + "image.FociSize[raw_image.FociCount == 0] = 0\n", + "\n", + "\n", + "\n", + "# HISTO\n", + "\n", + "histo = raw_histo\n", + "histo = histo.drop([\"Vessels\", \"Vacuol\", \"Pigment\", \"Std_hep_size\"], 1)\n", + "\n", + "\n", + "\n", + "# PHYSICAL\n", + "\n", + "physical = raw_physical\n", + "physical = physical.drop([\"CurrTag\", \"DeathDate\", \"Category\"], 1)\n", + "physical\n", + "\n", + "\n", + "\n", + "\n", + "# COMPLETE DATASET\n", + "\n", + "raw_data = pd.merge(pd.merge(image, histo, on=\"Sheep\", how=\"outer\"), physical, on=\"Sheep\", how=\"outer\")\n", + "raw_data.to_csv(\"../data/tentative_complete.csv\")\n", + "\n", + "\n", + "\n", + "\n", + "# AVERAGED BY SHEEP\n", + "data = raw_data\n", + "data[\"Inflammation\"] = data.FociCount * data.FociSize\n", + "\n", + "sheep = rescale(data.groupby(\"Sheep\").mean())\n", + "age = rescale(data.groupby(\"AgeAtDeath\").mean())\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "# REGRESSIONS : fixed effects, grouped by sheep\n", + "\n", + "df = sheep[[\"Portal_inflammation\", \"FociSize\"]].dropna()\n", + "df[\"Intercept\"] = np.ones(len(df))\n", + "portal_inflammation = sm.GLS(endog = df.Portal_inflammation, exog = df[[\"FociSize\", \"Intercept\"]]).fit().summary()\n", + "#portal_inflammation = portal_inflammation.summary()\n", + "del portal_inflammation.tables[2]\n", + "\n", + "\n", + "\n", + "df = sheep[[\"BD_hyperplasia\", \"Scale\", \"Directionality\", \"FociSize\"]].dropna()\n", + "df[\"Intercept\"] = np.ones(len(df))\n", + "hyperplasia = sm.GLS(endog = df.BD_hyperplasia, exog = df[[\"FociSize\", \"Scale\", \"Directionality\", \"Intercept\"]]).fit().summary()\n", + "#hyperplasia.summary()\n", + "del hyperplasia.tables[2]\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "# REGRESSIONS : fixed effects, grouped by age\n", + "\n", + "df = age[[\"Max_hep_size\", \"Entropy\", \"Directionality\"]].dropna()\n", + "df[\"Intercept\"] = np.ones(len(df))\n", + "maxhepsize = sm.GLS(endog = df.Max_hep_size, exog = df[[\"Entropy\", \"Directionality\", \"Intercept\"]]).fit().summary()\n", + "del maxhepsize.tables[2]\n", + "\n", + "\n", + "\n", + "\n", + "df = age[[\"Lobular_collapse\", \"FociSize\"]].dropna()\n", + "df[\"Intercept\"] = np.ones(len(df))\n", + "lobular_collapse = sm.GLS(endog = df.Lobular_collapse, exog = df[[\"FociSize\", \"Intercept\"]]).fit().summary()\n", + "del lobular_collapse.tables[2]\n", + "\n", + "\n", + "df = age[[\"Interface_hepatitis\", \"Lacunarity\"]].dropna()\n", + "df[\"Intercept\"] = np.ones(len(df))\n", + "interface_hepatitis = sm.GLS(endog = df.Interface_hepatitis, exog = df[[\"Lacunarity\", \"Intercept\"]]).fit().summary()\n", + "del interface_hepatitis.tables[2]\n", + "\n", + "\n", + "df = age[[\"Fibrosis\", \"Inflammation\"]].dropna()\n", + "df[\"Intercept\"] = np.ones(len(df))\n", + "fibrosis = sm.GLS(endog = df.Fibrosis, exog = df[[\"Inflammation\", \"Intercept\"]]).fit().summary()\n", + "del fibrosis.tables[2]\n", + "\n", + "\n", + "\n", + "\n", + "# PCA\n", + "\n", + "s = sheep.dropna(subset=delayer([imagecols, histcols]))\n", + "pca = decomposition.PCA(n_components=1)\n", + "pcax = pca.fit_transform(s[imagecols])\n", + "pcay = pca.fit_transform(s[histcols])\n", + "pca = sm.GLS(endog = pcay[:, 0][:, np.newaxis], exog = add_constant(pcax)).fit().summary()\n", + "del pca.tables[2]\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "# REGRESSIONS : mixed effects, intercept on age at death\n", + "\n", + "df = age[[\"Fibrosis\", \"Inflammation\"]].dropna()\n", + "df[\"Intercept\"] = np.ones(len(df))\n", + "fibrosis = sm.GLS(endog = df.Fibrosis, exog = df[[\"Inflammation\", \"Intercept\"]]).fit().summary()\n", + "del fibrosis.tables[2]" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "prompt_number": 14 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "a = portal_inflammation.summary()\n", + "del a.tables[2]\n", + "a" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [ + { + "html": [ + "<table class=\"simpletable\">\n", + "<caption>GLS Regression Results</caption>\n", + "<tr>\n", + " <th>Dep. Variable:</th> <td>Portal_inflammation</td> <th> R-squared: </th> <td> 0.280</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Model:</th> <td>GLS</td> <th> Adj. R-squared: </th> <td> 0.273</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Method:</th> <td>Least Squares</td> <th> F-statistic: </th> <td> 37.34</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Date:</th> <td>Tue, 28 Oct 2014</td> <th> Prob (F-statistic):</th> <td>2.12e-08</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Time:</th> <td>23:35:30</td> <th> Log-Likelihood: </th> <td> 14.996</td>\n", + "</tr>\n", + "<tr>\n", + " <th>No. Observations:</th> <td> 98</td> <th> AIC: </th> <td> -25.99</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Df Residuals:</th> <td> 96</td> <th> BIC: </th> <td> -20.82</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Df Model:</th> <td> 1</td> <th> </th> <td> </td> \n", + "</tr>\n", + "<tr>\n", + " <th>Covariance Type:</th> <td>nonrobust</td> <th> </th> <td> </td> \n", + "</tr>\n", + "</table>\n", + "<table class=\"simpletable\">\n", + "<tr>\n", + " <td></td> <th>coef</th> <th>std err</th> <th>t</th> <th>P>|t|</th> <th>[95.0% Conf. Int.]</th> \n", + "</tr>\n", + "<tr>\n", + " <th>FociSize</th> <td> 0.5627</td> <td> 0.092</td> <td> 6.111</td> <td> 0.000</td> <td> 0.380 0.746</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Intercept</th> <td> 0.3368</td> <td> 0.043</td> <td> 7.855</td> <td> 0.000</td> <td> 0.252 0.422</td>\n", + "</tr>\n", + "</table>" + ], + "metadata": {}, + "output_type": "pyout", + "prompt_number": 19, + "text": [ + "<class 'statsmodels.iolib.summary.Summary'>\n", + "\"\"\"\n", + " GLS Regression Results \n", + "===============================================================================\n", + "Dep. Variable: Portal_inflammation R-squared: 0.280\n", + "Model: GLS Adj. R-squared: 0.273\n", + "Method: Least Squares F-statistic: 37.34\n", + "Date: Tue, 28 Oct 2014 Prob (F-statistic): 2.12e-08\n", + "Time: 23:35:30 Log-Likelihood: 14.996\n", + "No. Observations: 98 AIC: -25.99\n", + "Df Residuals: 96 BIC: -20.82\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "==============================================================================\n", + " coef std err t P>|t| [95.0% Conf. Int.]\n", + "------------------------------------------------------------------------------\n", + "FociSize 0.5627 0.092 6.111 0.000 0.380 0.746\n", + "Intercept 0.3368 0.043 7.855 0.000 0.252 0.422\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "\"\"\"" + ] + } + ], + "prompt_number": 19 + }, + { + "cell_type": "heading", + "level": 2, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Image Processing" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "<img src=\"figures/sheep.jpg\"></img>" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "<img src=\"figures/processed.jpg\"></img>" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Extraction" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "- Automagical\n", + "- Reasonably quick" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Robust" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "- Invariant to staining, slicing, field-related variation\n", + "- Capture intersample variation" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Structural and Textural Measures" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "- characteristic **scale** of sinusoid widths\n", + "- **directional** amplitude of preferred sinusoid alignment\n", + "- **tissue to sinusoid** ratio\n", + "- **count** of inflammatory foci per image\n", + "- **mean size** of inflammatory foci per image\n", + "- information **entropy** of sinusoid distribution\n", + "- **lacunarity** ( clustering ) of sinusoids" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "<img src=\"figures/gif.gif\"></img>" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Exploratory Analysis" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "by individual" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "portal_inflammation" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "html": [ + "<table class=\"simpletable\">\n", + "<caption>GLS Regression Results</caption>\n", + "<tr>\n", + " <th>Dep. Variable:</th> <td>Portal_inflammation</td> <th> R-squared: </th> <td> 0.280</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Model:</th> <td>GLS</td> <th> Adj. R-squared: </th> <td> 0.273</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Method:</th> <td>Least Squares</td> <th> F-statistic: </th> <td> 37.34</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Date:</th> <td>Tue, 28 Oct 2014</td> <th> Prob (F-statistic):</th> <td>2.12e-08</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Time:</th> <td>23:40:10</td> <th> Log-Likelihood: </th> <td> 14.996</td>\n", + "</tr>\n", + "<tr>\n", + " <th>No. Observations:</th> <td> 98</td> <th> AIC: </th> <td> -25.99</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Df Residuals:</th> <td> 96</td> <th> BIC: </th> <td> -20.82</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Df Model:</th> <td> 1</td> <th> </th> <td> </td> \n", + "</tr>\n", + "<tr>\n", + " <th>Covariance Type:</th> <td>nonrobust</td> <th> </th> <td> </td> \n", + "</tr>\n", + "</table>\n", + "<table class=\"simpletable\">\n", + "<tr>\n", + " <td></td> <th>coef</th> <th>std err</th> <th>t</th> <th>P>|t|</th> <th>[95.0% Conf. Int.]</th> \n", + "</tr>\n", + "<tr>\n", + " <th>FociSize</th> <td> 0.5627</td> <td> 0.092</td> <td> 6.111</td> <td> 0.000</td> <td> 0.380 0.746</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Intercept</th> <td> 0.3368</td> <td> 0.043</td> <td> 7.855</td> <td> 0.000</td> <td> 0.252 0.422</td>\n", + "</tr>\n", + "</table>" + ], + "metadata": {}, + "output_type": "pyout", + "prompt_number": 29, + "text": [ + "<class 'statsmodels.iolib.summary.Summary'>\n", + "\"\"\"\n", + " GLS Regression Results \n", + "===============================================================================\n", + "Dep. Variable: Portal_inflammation R-squared: 0.280\n", + "Model: GLS Adj. R-squared: 0.273\n", + "Method: Least Squares F-statistic: 37.34\n", + "Date: Tue, 28 Oct 2014 Prob (F-statistic): 2.12e-08\n", + "Time: 23:40:10 Log-Likelihood: 14.996\n", + "No. Observations: 98 AIC: -25.99\n", + "Df Residuals: 96 BIC: -20.82\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "==============================================================================\n", + " coef std err t P>|t| [95.0% Conf. Int.]\n", + "------------------------------------------------------------------------------\n", + "FociSize 0.5627 0.092 6.111 0.000 0.380 0.746\n", + "Intercept 0.3368 0.043 7.855 0.000 0.252 0.422\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "\"\"\"" + ] + } + ], + "prompt_number": 29 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "hyperplasia" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "html": [ + "<table class=\"simpletable\">\n", + "<caption>GLS Regression Results</caption>\n", + "<tr>\n", + " <th>Dep. Variable:</th> <td>BD_hyperplasia</td> <th> R-squared: </th> <td> 0.306</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Model:</th> <td>GLS</td> <th> Adj. R-squared: </th> <td> 0.284</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Method:</th> <td>Least Squares</td> <th> F-statistic: </th> <td> 13.83</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Date:</th> <td>Tue, 28 Oct 2014</td> <th> Prob (F-statistic):</th> <td>1.52e-07</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Time:</th> <td>23:40:10</td> <th> Log-Likelihood: </th> <td> -3.9632</td>\n", + "</tr>\n", + "<tr>\n", + " <th>No. Observations:</th> <td> 98</td> <th> AIC: </th> <td> 15.93</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Df Residuals:</th> <td> 94</td> <th> BIC: </th> <td> 26.27</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Df Model:</th> <td> 3</td> <th> </th> <td> </td> \n", + "</tr>\n", + "<tr>\n", + " <th>Covariance Type:</th> <td>nonrobust</td> <th> </th> <td> </td> \n", + "</tr>\n", + "</table>\n", + "<table class=\"simpletable\">\n", + "<tr>\n", + " <td></td> <th>coef</th> <th>std err</th> <th>t</th> <th>P>|t|</th> <th>[95.0% Conf. Int.]</th> \n", + "</tr>\n", + "<tr>\n", + " <th>FociSize</th> <td> 0.6698</td> <td> 0.113</td> <td> 5.902</td> <td> 0.000</td> <td> 0.444 0.895</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Scale</th> <td> 0.5811</td> <td> 0.243</td> <td> 2.394</td> <td> 0.019</td> <td> 0.099 1.063</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Directionality</th> <td> -0.4419</td> <td> 0.190</td> <td> -2.330</td> <td> 0.022</td> <td> -0.819 -0.065</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Intercept</th> <td> -0.0504</td> <td> 0.079</td> <td> -0.642</td> <td> 0.523</td> <td> -0.206 0.105</td>\n", + "</tr>\n", + "</table>" + ], + "metadata": {}, + "output_type": "pyout", + "prompt_number": 31, + "text": [ + "<class 'statsmodels.iolib.summary.Summary'>\n", + "\"\"\"\n", + " GLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: BD_hyperplasia R-squared: 0.306\n", + "Model: GLS Adj. R-squared: 0.284\n", + "Method: Least Squares F-statistic: 13.83\n", + "Date: Tue, 28 Oct 2014 Prob (F-statistic): 1.52e-07\n", + "Time: 23:40:10 Log-Likelihood: -3.9632\n", + "No. Observations: 98 AIC: 15.93\n", + "Df Residuals: 94 BIC: 26.27\n", + "Df Model: 3 \n", + "Covariance Type: nonrobust \n", + "==================================================================================\n", + " coef std err t P>|t| [95.0% Conf. Int.]\n", + "----------------------------------------------------------------------------------\n", + "FociSize 0.6698 0.113 5.902 0.000 0.444 0.895\n", + "Scale 0.5811 0.243 2.394 0.019 0.099 1.063\n", + "Directionality -0.4419 0.190 -2.330 0.022 -0.819 -0.065\n", + "Intercept -0.0504 0.079 -0.642 0.523 -0.206 0.105\n", + "==================================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "\"\"\"" + ] + } + ], + "prompt_number": 31 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "pca" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "html": [ + "<table class=\"simpletable\">\n", + "<caption>GLS Regression Results</caption>\n", + "<tr>\n", + " <th>Dep. Variable:</th> <td>y</td> <th> R-squared: </th> <td> 0.075</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Model:</th> <td>GLS</td> <th> Adj. R-squared: </th> <td> 0.065</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Method:</th> <td>Least Squares</td> <th> F-statistic: </th> <td> 7.723</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Date:</th> <td>Wed, 29 Oct 2014</td> <th> Prob (F-statistic):</th> <td>0.00657</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Time:</th> <td>14:38:47</td> <th> Log-Likelihood: </th> <td> -70.082</td>\n", + "</tr>\n", + "<tr>\n", + " <th>No. Observations:</th> <td> 97</td> <th> AIC: </th> <td> 144.2</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Df Residuals:</th> <td> 95</td> <th> BIC: </th> <td> 149.3</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Df Model:</th> <td> 1</td> <th> </th> <td> </td> \n", + "</tr>\n", + "<tr>\n", + " <th>Covariance Type:</th> <td>nonrobust</td> <th> </th> <td> </td> \n", + "</tr>\n", + "</table>\n", + "<table class=\"simpletable\">\n", + "<tr>\n", + " <td></td> <th>coef</th> <th>std err</th> <th>t</th> <th>P>|t|</th> <th>[95.0% Conf. Int.]</th> \n", + "</tr>\n", + "<tr>\n", + " <th>const</th> <td>-2.949e-17</td> <td> 0.051</td> <td>-5.77e-16</td> <td> 1.000</td> <td> -0.102 0.102</td>\n", + "</tr>\n", + "<tr>\n", + " <th>x1</th> <td> 0.3865</td> <td> 0.139</td> <td> 2.779</td> <td> 0.007</td> <td> 0.110 0.663</td>\n", + "</tr>\n", + "</table>" + ], + "metadata": {}, + "output_type": "pyout", + "prompt_number": 15, + "text": [ + "<class 'statsmodels.iolib.summary.Summary'>\n", + "\"\"\"\n", + " GLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: y R-squared: 0.075\n", + "Model: GLS Adj. R-squared: 0.065\n", + "Method: Least Squares F-statistic: 7.723\n", + "Date: Wed, 29 Oct 2014 Prob (F-statistic): 0.00657\n", + "Time: 14:38:47 Log-Likelihood: -70.082\n", + "No. Observations: 97 AIC: 144.2\n", + "Df Residuals: 95 BIC: 149.3\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "==============================================================================\n", + " coef std err t P>|t| [95.0% Conf. Int.]\n", + "------------------------------------------------------------------------------\n", + "const -2.949e-17 0.051 -5.77e-16 1.000 -0.102 0.102\n", + "x1 0.3865 0.139 2.779 0.007 0.110 0.663\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "\"\"\"" + ] + } + ], + "prompt_number": 15 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Exploratory Analysis" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "by age class" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "fibrosis" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "html": [ + "<table class=\"simpletable\">\n", + "<caption>GLS Regression Results</caption>\n", + "<tr>\n", + " <th>Dep. Variable:</th> <td>Fibrosis</td> <th> R-squared: </th> <td> 0.800</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Model:</th> <td>GLS</td> <th> Adj. R-squared: </th> <td> 0.778</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Method:</th> <td>Least Squares</td> <th> F-statistic: </th> <td> 36.07</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Date:</th> <td>Wed, 29 Oct 2014</td> <th> Prob (F-statistic):</th> <td>0.000201</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Time:</th> <td>11:13:48</td> <th> Log-Likelihood: </th> <td> 7.8003</td>\n", + "</tr>\n", + "<tr>\n", + " <th>No. Observations:</th> <td> 11</td> <th> AIC: </th> <td> -11.60</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Df Residuals:</th> <td> 9</td> <th> BIC: </th> <td> -10.80</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Df Model:</th> <td> 1</td> <th> </th> <td> </td> \n", + "</tr>\n", + "<tr>\n", + " <th>Covariance Type:</th> <td>nonrobust</td> <th> </th> <td> </td> \n", + "</tr>\n", + "</table>\n", + "<table class=\"simpletable\">\n", + "<tr>\n", + " <td></td> <th>coef</th> <th>std err</th> <th>t</th> <th>P>|t|</th> <th>[95.0% Conf. Int.]</th> \n", + "</tr>\n", + "<tr>\n", + " <th>Inflammation</th> <td> 1.0159</td> <td> 0.169</td> <td> 6.006</td> <td> 0.000</td> <td> 0.633 1.399</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Intercept</th> <td> -0.0105</td> <td> 0.083</td> <td> -0.126</td> <td> 0.902</td> <td> -0.198 0.177</td>\n", + "</tr>\n", + "</table>" + ], + "metadata": {}, + "output_type": "pyout", + "prompt_number": 6, + "text": [ + "<class 'statsmodels.iolib.summary.Summary'>\n", + "\"\"\"\n", + " GLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: Fibrosis R-squared: 0.800\n", + "Model: GLS Adj. R-squared: 0.778\n", + "Method: Least Squares F-statistic: 36.07\n", + "Date: Wed, 29 Oct 2014 Prob (F-statistic): 0.000201\n", + "Time: 11:13:48 Log-Likelihood: 7.8003\n", + "No. Observations: 11 AIC: -11.60\n", + "Df Residuals: 9 BIC: -10.80\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "================================================================================\n", + " coef std err t P>|t| [95.0% Conf. Int.]\n", + "--------------------------------------------------------------------------------\n", + "Inflammation 1.0159 0.169 6.006 0.000 0.633 1.399\n", + "Intercept -0.0105 0.083 -0.126 0.902 -0.198 0.177\n", + "================================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "\"\"\"" + ] + } + ], + "prompt_number": 6 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "lobular_collapse" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "html": [ + "<table class=\"simpletable\">\n", + "<caption>GLS Regression Results</caption>\n", + "<tr>\n", + " <th>Dep. Variable:</th> <td>Lobular_collapse</td> <th> R-squared: </th> <td> 0.586</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Model:</th> <td>GLS</td> <th> Adj. R-squared: </th> <td> 0.540</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Method:</th> <td>Least Squares</td> <th> F-statistic: </th> <td> 12.73</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Date:</th> <td>Wed, 29 Oct 2014</td> <th> Prob (F-statistic):</th> <td>0.00605</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Time:</th> <td>11:13:48</td> <th> Log-Likelihood: </th> <td> 2.2626</td>\n", + "</tr>\n", + "<tr>\n", + " <th>No. Observations:</th> <td> 11</td> <th> AIC: </th> <td> -0.5252</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Df Residuals:</th> <td> 9</td> <th> BIC: </th> <td> 0.2706</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Df Model:</th> <td> 1</td> <th> </th> <td> </td> \n", + "</tr>\n", + "<tr>\n", + " <th>Covariance Type:</th> <td>nonrobust</td> <th> </th> <td> </td> \n", + "</tr>\n", + "</table>\n", + "<table class=\"simpletable\">\n", + "<tr>\n", + " <td></td> <th>coef</th> <th>std err</th> <th>t</th> <th>P>|t|</th> <th>[95.0% Conf. Int.]</th> \n", + "</tr>\n", + "<tr>\n", + " <th>FociSize</th> <td> 1.1379</td> <td> 0.319</td> <td> 3.567</td> <td> 0.006</td> <td> 0.416 1.860</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Intercept</th> <td> 0.0460</td> <td> 0.159</td> <td> 0.289</td> <td> 0.779</td> <td> -0.314 0.406</td>\n", + "</tr>\n", + "</table>" + ], + "metadata": {}, + "output_type": "pyout", + "prompt_number": 7, + "text": [ + "<class 'statsmodels.iolib.summary.Summary'>\n", + "\"\"\"\n", + " GLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: Lobular_collapse R-squared: 0.586\n", + "Model: GLS Adj. R-squared: 0.540\n", + "Method: Least Squares F-statistic: 12.73\n", + "Date: Wed, 29 Oct 2014 Prob (F-statistic): 0.00605\n", + "Time: 11:13:48 Log-Likelihood: 2.2626\n", + "No. Observations: 11 AIC: -0.5252\n", + "Df Residuals: 9 BIC: 0.2706\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "==============================================================================\n", + " coef std err t P>|t| [95.0% Conf. Int.]\n", + "------------------------------------------------------------------------------\n", + "FociSize 1.1379 0.319 3.567 0.006 0.416 1.860\n", + "Intercept 0.0460 0.159 0.289 0.779 -0.314 0.406\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "\"\"\"" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "interface_hepatitis" + ], + "language": "python", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "html": [ + "<table class=\"simpletable\">\n", + "<caption>GLS Regression Results</caption>\n", + "<tr>\n", + " <th>Dep. Variable:</th> <td>Interface_hepatitis</td> <th> R-squared: </th> <td> 0.659</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Model:</th> <td>GLS</td> <th> Adj. R-squared: </th> <td> 0.621</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Method:</th> <td>Least Squares</td> <th> F-statistic: </th> <td> 17.38</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Date:</th> <td>Wed, 29 Oct 2014</td> <th> Prob (F-statistic):</th> <td>0.00242</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Time:</th> <td>11:13:48</td> <th> Log-Likelihood: </th> <td> 2.3063</td>\n", + "</tr>\n", + "<tr>\n", + " <th>No. Observations:</th> <td> 11</td> <th> AIC: </th> <td> -0.6126</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Df Residuals:</th> <td> 9</td> <th> BIC: </th> <td> 0.1832</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Df Model:</th> <td> 1</td> <th> </th> <td> </td> \n", + "</tr>\n", + "<tr>\n", + " <th>Covariance Type:</th> <td>nonrobust</td> <th> </th> <td> </td> \n", + "</tr>\n", + "</table>\n", + "<table class=\"simpletable\">\n", + "<tr>\n", + " <td></td> <th>coef</th> <th>std err</th> <th>t</th> <th>P>|t|</th> <th>[95.0% Conf. Int.]</th> \n", + "</tr>\n", + "<tr>\n", + " <th>Lacunarity</th> <td> -1.0224</td> <td> 0.245</td> <td> -4.168</td> <td> 0.002</td> <td> -1.577 -0.468</td>\n", + "</tr>\n", + "<tr>\n", + " <th>Intercept</th> <td> 0.9504</td> <td> 0.143</td> <td> 6.669</td> <td> 0.000</td> <td> 0.628 1.273</td>\n", + "</tr>\n", + "</table>" + ], + "metadata": {}, + "output_type": "pyout", + "prompt_number": 8, + "text": [ + "<class 'statsmodels.iolib.summary.Summary'>\n", + "\"\"\"\n", + " GLS Regression Results \n", + "===============================================================================\n", + "Dep. Variable: Interface_hepatitis R-squared: 0.659\n", + "Model: GLS Adj. R-squared: 0.621\n", + "Method: Least Squares F-statistic: 17.38\n", + "Date: Wed, 29 Oct 2014 Prob (F-statistic): 0.00242\n", + "Time: 11:13:48 Log-Likelihood: 2.3063\n", + "No. Observations: 11 AIC: -0.6126\n", + "Df Residuals: 9 BIC: 0.1832\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "==============================================================================\n", + " coef std err t P>|t| [95.0% Conf. Int.]\n", + "------------------------------------------------------------------------------\n", + "Lacunarity -1.0224 0.245 -4.168 0.002 -1.577 -0.468\n", + "Intercept 0.9504 0.143 6.669 0.000 0.628 1.273\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", + "\"\"\"" + ] + } + ], + "prompt_number": 8 + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Exploratory analysis" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": {}, + "source": [ + "with a random effect on age at death" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "| Dependent variable | Models<br />AIC < 2 + AIC<sub>min</sub> | Primary explanatory variables |\n", + "|------------------------------------------|:----------------------------------:|---------------------------------------------------------------------|\n", + "| Ishak score | 7 | entropy, tissue-to-sinusoid, focus count, focus size |\n", + "| Lobular collapse | 5 | entropy, lacunarity, tissue-to-sinusoid, focus count |\n", + "| Confluent necrosis | 1 | entropy |\n", + "| Interface hepatitis | 2 | entropy, tissue-to-sinusoid |\n", + "| Portal inflammation | 4 | entropy, focus size, lacunarity, focus count, scale, directionality |\n", + "| Fibrosis | 2 | entropy, lacunarity, tissue-to-sinusoid |\n", + "| Biliary hyperplasia | 1 | focus size |\n", + "| Necrosis, apoptosis, random inflammation | <font color=\"white\">This_is_bla</font>2<font color=\"white\">This_is_bla</font> | entropy, lacunarity |" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "- entropy consistently explains histological measures when controlled for age\n", + "- also important : tissue to sinusoid ratio, focus count and size, lacunarity" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- biological / historical reasoning for this potential cohort effect\n", + "- interpretation of these models\n", + "- quality of fit" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Conclusions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- our **semi-educated guess** measures may capture relevant information\n", + "- underlying **structure** in the data needs thought\n", + "- still no **map** from image or histological measures to condition of individual\n" + ] + }, + { + "cell_type": "heading", + "level": 2, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Future directions" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Further exploration of the dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "-" + } + }, + "source": [ + "- 145 sheep ( 89 females )\n", + "- 11 age classes\n", + "- potential redundancy in various measures" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- 4460 entries across 27 variables\n", + "- 3330 with full image and histological information\n", + "- 1196 for which **complete** information is available" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "More data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- nutritional information\n", + "- immunity data" + ] + }, + { + "cell_type": "heading", + "level": 3, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Narrow-field images" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- 12536 images\n", + "- spatial distribution of nuclei" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "<img src=\"figures/10x.png\" width=100%></src>" + ] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file