{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# A short guide on how to use mixed random forests" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This document gives a short tutorial on how to use mixed random forest (mixed RF) for feature selection\n", "and prediction using python. The reader may benefit from having some background on gaussian process\n", "prediction and the general use of the random forest as provided by the python scikit-learn package.\n", "However, knowledge of neither is required to follow the steps of this tutorial. All source files for the\n", "following examples are to be found in the examples directory of the mixed RF module." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Examples" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For each of the following examples we require the loaded mixed RF module, some helper functions, the scipy library and\n", "matplotlib for plotting." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Load limix module for mixed random forest\n", "from limix.ensemble.lmm_forest import Forest as LMF\n", "from limix.ensemble import lmm_forest_utils as utils\n", "import scipy as sp\n", "import pylab as pl\n", "# Activate inline plotting\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example 1: Recovering a single fixed effect" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At first we need to create some data." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sp.random.seed(43)\n", "n_sample = 100\n", "X = sp.empty((n_sample,2))\n", "X[:,0] = sp.arange(0,1,1.0/n_sample)\n", "X[:,1] = sp.random.rand(n_sample)\n", "noise = sp.random.randn(n_sample,1)*.05\n", "y_fixed = (X[:,0:1] > .5)*.5\n", "y_fn = y_fixed + noise" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we consider a simulated data set of size 100. For each sample we simulate features in 2D where the\n", "first dimension is sampled from a grid on [0, 1]. The second dimension contains random samples from the\n", "uniform distribution on the interval ]0, 1[. We combine features for all samples into the matrix $\\mathbf{X}$. The\n", "fixed effect $\\mathbf{y}_\\text{fixed}$ shall only be affected by the first feature dimension. In addition, we add some gaussian\n", "noise to obtain the simulated observation $\\mathbf{y}_\\text{fn}$.\n", " \n", "The second part of the simulation adds structured noise to the observations $\\mathbf{y}_\\text{fn}$. The samples become\n", "connected (i.e. correlated) through the simulated covariance." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Add some independent noise to make sure kernel is positive semi definite\n", "kernel = utils.getQuadraticKernel(X[:,0], d=0.0025) + sp.eye(n_sample)*1e-8\n", "y_conf = .5*sp.random.multivariate_normal(sp.zeros(n_sample), kernel).reshape(-1,1)\n", "y_tot = y_fn + y_conf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now visualize our simulated data (figure 1)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pl.plot(X[:,0], y_fn, 'c')\n", "pl.plot(X[:,0], y_conf+y_fn, 'm')\n", "pl.plot(X[:,0], y_conf + y_fixed, 'g')\n", "pl.legend(['fixed effect + ind. noise',\n", " 'fixed effect + confounding + ind. noise',\n", " 'fixed effect + confounding'],\n", " bbox_to_anchor=(1.0, 1.4))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we divide our data into training- and test sample." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": true }, "outputs": [], "source": [ "training_sample = sp.zeros(n_sample, dtype='bool')\n", "training_sample[sp.random.permutation(n_sample)[:sp.int_(.66*n_sample)]] = True\n", "test_sample = ~training_sample\n", "X_train = X[training_sample]\n", "y_train = y_fn[training_sample]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We proceed by fitting the standard random forest to the training sample. We can do so using the mixed\n", "RF module with the identity $\\mathbf{I}$ as the covariance matrix (i.e. setting kernel=’iid’)." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "random_forest = LMF(kernel='iid')\n", "random_forest.fit(X[training_sample],y_tot[training_sample])\n", "response_rf = random_forest.predict(X[test_sample])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For fitting the mixed RF we need to pick the rows and colums of the covariance according to the training\n", "sample indexes. For prediction we need to use the cross covariance between training and test samples." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "kernel_train = kernel[sp.ix_(training_sample, training_sample)]\n", "kernel_test = kernel[sp.ix_(test_sample, training_sample)]\n", "lm_forest = LMF(kernel=kernel_train)\n", "lm_forest.fit(X[training_sample],y_tot[training_sample])\n", "response_lmf = lm_forest.predict(X[test_sample], k=kernel_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we plot the results of our prediction" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAEPCAYAAAC+35gCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXeYVOX1xz9fem+CIAIqCPaKIoq9RY3YFUXF2Gs0idGU\nX+LsGBMj9h4wdo0aewliR6yIBcWGFRBQUKR32PP7472zzM7OzE6503bfz/PMszN37n3v2d2Ze+57\n3nO+R2aGx+PxeDyZ0KTUBng8Ho+ncvBOw+PxeDwZ452Gx+PxeDLGOw2Px+PxZIx3Gh6Px+PJGO80\nPB6Px5MxJXUaku6QNFvS5BTv7ylpgaQPgsdfim2jx+PxeNbSrMTnvxO4EbgnzT6vmtkhRbLH4/F4\nPGko6UzDzF4D5tWzm4phi8fj8Xjqp9zXNAzYRdKHksZI2rzUBnk8Hk9jptThqfp4H+htZkslHQg8\nAQwosU0ej8fTaClrp2Fmi+KePyvpFkldzOzn+P0keQEtj8fjyRIzyzr8X9ZOQ1J3YI6ZmaRBgBId\nRoxcfvmGiKQqM6sqtR3lgP9bOPzfYS3+b7GWXG+2S+o0JD0A7AF0lfQdEAGaA5jZKOAo4GxJq4Gl\nwLGlstXjyQdF1Qd4CtjBIra61PZ4PLlSUqdhZsfV8/7NwM1FMsfjKSQ9gW2Aw4GHS2yLx5Mz5Z49\n5cmecaU2oIwYV2oD4ugALAN+V4JzjyvBOcuVcaU2oNLxTqOBYWbjSm1DuVBmf4sOwHNAd0W1czFP\nXGZ/h5Li/xb5U9YL4fnis6oaLhWY+NABV8h6HXAhbr3O46k4GrTTgIq8uHjqoUJvBjoAC3HSORFF\n1dci9k2JbfJ4ssaHpzye4tABWGgRWwT8Gzi/xPZ4PDnhnYbHUxw6AAuC5zcCIxRVxxLa4/HkhHca\nHk9x6IgLT2ERmwFMAoq6IO7xhIF3Gp46SBon6dQin/NXkl4r5jmLTGxNI8ZHwFYlssXjyRnvNDzJ\nsOBRB0lVku7NZ3BJG0qqltSYPn+JTmMysHWJbPF4cqYxfWkrFkkVk+WmgEx3L6gx5YWfaXgaBN5p\nlAhJ2wctbBdK+q+khyT9LXhvT0kzJF0s6XvgdkktJF0naWbwuFZSi2D/OqGd4E6+b/D8Lkk3S3om\nON/bsfeC9/eT9Lmk+ZJuxF3M61zQJR0A/AkYJmmRpA+C7eMkXSbpDWAx0FfSVEn7xB0bP0MZH/yc\nH9gzmGBmI+lKST9L+iY4X0Mh0Wl8AmyiqJqXyB6PJye80ygBwcX+ceAOoDPwAHAYtUNC3YP3+gBn\nAn8BBuH0i7YJnmfTM30YUBWM+RXw98CWrsCjwJ+BdYCvgSEkCU+Z2VjgH8CDZtbezLaLe/sE4DSg\nPTCduiGu+Oe7BT87mlkHM3sb56R2Aj4P7BgJ3J7F71fu1HIaFrGlwAygf8ks8nhyoGLCHoVA0XCK\nxCySdQHhYKCpmd0YvH5c0jsJ+1QDETNbBaySNBw4z8x+ApAUBUYBl2RiIvCYmb0bHHs/cE3w3kHA\nx2b2WPD6OkkXphkr2SzEgLvM7LOY7UkiVErxPJ5pZnZ7YOM9wC2S1jWzOWnsqRQSZxrgQlRbA58W\n3xyPJzcatdPI4WIfFj2BmQnbvkt4/aOZrUw4Zlrc6+nBtkyZHfd8GdAubtwZ9diSCbkck8gPsSdB\nt0Zwdla001BUws3AFiW8NRm3rvFg0Y3yeHLEh6dKw/fA+gnb+iS8TpwFzQI2TNh/VvB8CdAm9oak\nHlnYMgvoHXes4l8noTrF9kR7lwBt4173SLNvQ6cNsCJJH42Y0/B4KgbvNErDm8AaSedJaibpUGDH\neo55APiLpK7BOsQlQGxh+UNgC0nbSGqFW7uIJ92Makxw7OFBltb51L7AJzIb2DBJhlTi60nAscHv\ntwNwJGudxY8459MvzXkaEslCU+CdhqcC8U6jBATrFEcAp+KUT48HngHiw1GJd+OXAe/i4uAfBc8v\nC8b7ArgUeBGYArxG3UXoxPEsOPYn4Gjgn8BPwMbA62nMjzUQmivp3TT2/hXnFObhnNj9NTuaLcUt\nxL8RZErtlM7GBkAqp/E1sK6i6lBkezyenJFZ5X8vJVkyNdtU28sRSROAW8zs7lLbUu5U0v8VQFHt\nCNxiEaszm1RUE4ELLGJvFt8yT2Mm1++Rn2mUCEm7S+oRhG9OArYExpbaLk9BqNGdSoIPUXkqikad\nPVViNgH+i1ss/ho4ysxmpz/EU6HEK9wm4ivDPRWFdxolwsxuA24rtR2eopBqTQPcTOOIItri8eSF\nD095PIWnPqexVVDL4fGUPd5peDyFJ6XTsIjNwWXNJdbteDxliXcaHk/hSTfTAL+u4akgvNPweApP\nfU7D99bwVAzeaXg8BULiMYkPGT1hKD9umighEs8UXFGlx1P2eKdRAUjqE/SvCHWxtBG0WC01GwNb\nM2tQT+7/30lp9psGbFAkmzyevPBOowIws+lB/4qile/HtWRdFDymSvprwj5TJS2N22dhlmKJDR2n\nHtztk8UcNfzyNPtNpbYYpcdTtnin4amPjmbWHic4+AdJB8W9Z8DBgUNrHzRU+iH5MI2S4cB/OXmP\nqfSaMCvNftOAPoo2qp7pngrFf0hLRHCX/ntJHwV36bdL6i7pWUkLJL0gqVOwb+yuv4mkLpK+k3Rw\n8F47SV9JOiF4vWlw7NyghevRcedcR9JTwfgTyEJl1szew7Uo3TzUP0QDxoz5Zgyjzdy2pFkIt4gt\nw1WMdy+acR5PjjRapyExWmKcxBiJTiUYw3CVwPvgJEUOBp4F/gisi/vfnF/nILOfgVOA2yR1A64F\n3jez+yS1BV4A7gO6Acfiut9tFhx+M7AUJ31+CnAy9SvJyv2uGgxsAUxM9r6nNhLNpJp1inTaUzGm\n4kNUngqg0ToNYACwB3AgME+q04MCiao02w04PW6MUTnYcKOZ/Whms3By5m+Z2YdmtgLXQ3y7ZAeZ\n2Qs4ifKXgQNwPcTBOZ5vzexuM6s2s0nAY8DRkprinNQlZrbMzD4B7qb+i/5PkpbieoBEzOzVuPcE\nPCFpXvB4LPkQjZI+wKuKSszesgN/W356PftPxTsNTwXQmJ3G0uDnRKCzWV3nYEZVmu3CzQxiY5yZ\nuF8GJLZgjX+9nLUtWZNxG+7O/y4zmxds2wDYKe4iPg8XV+8OdMVpjcW3ZZ2egY3rBHZcCPxGqtX7\nwYBDzaxz8PAaSmvphVsIb0XbH1ezpuXFUtr/p8+g8lQEjdlpuEVK2N+M+SUcI56MQj3BrGE0cA9w\nrqTY2sR04NW4i3jnYIH6XFyDpdXUbiub2GI2KcGs5Vrc3fBvM/tVGj1tcB0VO9Bu9kLgDdILE07F\nzzQ8FUCjdRqxRcp8LvZhjJEjfwbW4NYkrgTukdQE+B8wQNIJkpoHjx0lbWpma3ChqipJrSVtDpxE\ndt3x/gn8WlKbevds5Jgx1oxzWVsNfiHwXJpDpuKdhqcCaLROo0xJ16LVACQNxN3tjwjqNq4I3vuD\nmS0C9sctgM8EvgcuB1oEY5yHCzX9ANwRPDK1BzP7X3Dsadn+Yo2YDsBCM6aYka5fig9PeSoC3+7V\nU3FU0v9VUe0FXGIR26ue/doBc4C2FmkAX0pP2ePbvXo85Ul9YoUAWMQWA0tw6dYeT9ninYbHUwAk\ntpRoSoLTkGgl0S3FYT5E5Sl7vNPweEJGogkus03UnWmcB5yQ4tCp+MVwT5njnYbHEzJmVJuxvRmr\nqes0rjbj2hSHTsU7DU+Z452Gx1NYajkNs7Qpzj485Sl7vNPweApLJrpTMabiZxqeMsc7DY+nsGSU\nPRUwFe80PGWOdxoeT8hIbCyxTvAyqdOQ2F7ikITN04ANFA23Q6PHEybeaXg84fN3YL/geQdcr4xE\n2gN/l9bqjVnEFgIrocbheDxlh3caJSChTeoPku6NqcdKukvSirgWqoviGyl5KoJeOBkXSB2eeg0n\n6ZIofz8VvxjuKWNK5jQk3SFptqTJafa5QdKXkj6UlLS3RIVS0yYV2AbYCvhL3HtXxLVQbW9mD5fK\nUE9OzMKFmiCF0zCjGqfhNSfhrWn4dQ1PGVPKmcaduAZCSQl6UW9sZv2BM4Bbi2VYMTGz2cDz+Daq\nDQYzjjar6VWSciHcjJfMmJGweSreaXjKmJI5DTN7DZiXZpdDcJ3lMLMJQCdJofVQljRa0jhJY2K9\nuIs8RqyNai+c83wn8T1PgyCb7CnwtRqeMqec1zTWp3aXuRm4WHFYJLR7VVXiDpKq0mzPp91rrE3q\nQlzjpG+Ay+Le+31c973E8IWnQlBULXHfsRVZHDYVP9PwlDHNSm1APSTecaespk24uI8zs3H1jB3f\n7nV/M6vTSMnMqhK3xW2vkjQG5zCybfcaa5P6sqTdgaeBHXCzDQOuNLNLshjPU560BxbWJ3UeaFU1\nM2Ml3ml4CoSkPYE98x2nnJ3GTKB33Ov4jJQ6pLrAp2E4bnZwZjKHUawxzGy8pBtxzZRiPRd8eKpC\nkegHVJvxLZmHpm4E3gLuw808e6ff3ePJnuBGelzstaRILuOUc3jqKWAEgKTBwPxg0TgUzGy+mQ3L\nw2GEMkbAdcAgSTvlOY6n9OwK7B48z9Rp/N6M+4Ln84BWQVMmj6fsKNlMQ9IDuPWArpK+AyJAcwAz\nG2VmYyQdJOkrXHOak0tla6Exs58k3Q38EZhPdn27PWWEmUveCMhId8qMZTXPI2aKagZuTW9K+BZ6\nPPlRMqdhZsdlsM95xbCl2JjZRkm2nVMKWzwFJdvMqRjeaXjKlnIOT3k8lU4+TiPMTEGPJzS80/B4\nCkdWTkNiO4mtcQkf3ml4yhLvNDyekJBoI7F33KZsZxpDcOtasfCUx1N2eKfh8YTHAKjVyrU7MDeL\n4x8ADmLO5j/jZxqeMsU7DY8nPHpDLS2pgcAHmR5sxlzgT8zZyjsNT9ninYbHEx5LgBcAFFVTYHvg\n3WwGMONWtnzoQ3x4ylOmlHNFeCgEGlEeT8Ex42Xg5eDlpsBsi9jPOQw1B+iiqFpYxFaGZqDHEwIN\n2mmYmZfj8JSKHXGaZFljEVujqH4AeuK0qDyessGHpzyewpCz0wiYwZpmPkTlKTu80/B4CsMO5OM0\n7n6xF6//Yd/wzPF4wsE7DY8nBCQkMUyiiaJqgWvhm3HmVB0O+M1Ydr1iSWgGejwh4Z2GxxMOLYBf\nBr2/twK+sYgtznm07h9PoenqnmEZ5/GEhXcaHk8ImLHCzEn5k/96Bnj9KU+Z4p2GxxM+YTgNrz/l\nKUu80/B4wiesmcb6Eg9JvCExRqJTCLZ5PHnRoOs0PJ5io6jaAhsDH+U51CxgPbD9QJ2DbaOAYXmO\n68kRRdUTOBzX9/3eUttTKvxMw+MJAYm9JTYEtgM+sYityGe8oBJ8HqqOVYRPBM7Mz0pPLiiqoYrq\nDeBjYGfgGkW1WYnNKhneaXg84XAxsDnhhKZizKDbJ48BbwL7m5FvL3pPlgTp07fh1It7WMROAKLA\nvxRVo1Sc8E7D4wmHXrh1iB3IUqQwDTM4Z5vnzRjiHUbJOBT4zCL2SJwO2K1AG+BXJbOqhHin4fGE\nw3PAdJwcelhOw2dQlZ6zgH/Fb7CIrcGFCv+pqLqWxKoS4p2GxxMCZlxIlRYDGwJfhDSs7+BXQhTV\nAGBL4PHE9yxi7+OaZl1ZbLtKjXcaHk94bAD8YBFbHtJ4vsCvtJwB3JlGnv6vwFBF1aeINpUc7zQ8\nnvDoD3wV4ngzWdmmj8TOIY7pyQBF1QoYgVsET4pFbBHwNHBYsewqB7zT8HjCY2PgyxDHm8HK9usD\nvw9xTE9mHAl8YBH7up79HsfVbjQa6nUakpoWwxCPp1KR2FViewox02g3uydVOirEMT2ZcSaumLI+\nXgC2b0wL4pnMNL6UdKWkzQtujcdTmXQFuhDyTCNQyV0JdK5vX094KKoeuAXwp+vb1yK2DHgeOKTQ\ndpULmTiNbXFfhH9LmiDpTEkdCmyXx1MxmPGEGS8S/kwD/GJ4KRgMTLCIrcpw/7IMUQU9XiZKvBmm\ndlm9TsPMFprZaDPbBfgDcAnwg6S7JW0chhEeT6WjqJoBfYBvQh7ap90Wn52At7PY/3/AHoqqfYHs\nyZVNcHVDOwMHklm4rV4yWdNoJulQSU8A1wFXA31xU7cxYRjh8TQAwk63jTGDycMGSd5xFJHBwIRM\nd7aILQDewF2YywYzPgfGBy9D0y7LJDz1Ba6UfqSZbWtm15jZD2b2CK4K1uPxuPWMsENTADN49+xD\ngYMKMLYnAUXVFHd3/k6Wh5ZliAqXDvxfQtQuy8RpbGNmp5jZm4lvmNmvwzDC46lUJNaVOBm3nhFm\num2MGXSY0RToVoCxPXXZAphlEfs5y+OeBA5QVC0LYFPOmDHfjGFhapdlsqaxKKyTeTwNkM2Akynk\nTKP3WwA/FGBsT12yCk3FsIjNxkmn7x26RVkgMVri1UI27fLFfR5PfvTCCQsWbqYx6OZmZtxRgLE9\ndcl2ETye5yix08DZvztJFr4l2oRxAu80PJ78+Bp4iELONHzKbTEZTO5OYzzugl1KZgY/ay18SzQB\n3pPonu8JZGbJ35AujHtpgOKeY2bX5HvysJBkZtYoG6J4Sk+QbrsY6BR29lTQ6GcR0NMitjDMsT21\nUVQdcRfdThax1Tkc3wr4CVgv0KUqOkFIahRwZuI6hsTtQD9gKTAcNC+X62a6mUZ7oB0uk+BsoCcu\nX/wsYPtsT+TxNGD6UJh0Wyxihq/VKBY7Au/n4jAAgv//+1A6gcl6Fr77AXuQZ81GSqdhZlVmFgV6\nA9ub2YVm9jucE9kg1xN6PA2QQlSCr6W6yQyeGn1Ewcb3xMhnPSNGOYSoUrE0+JlXzUYmaxrrAvHl\n9KuCbR6Px5F0EVzSWEmTJI2RlHsmi2wGU/c8UqJZPkZ66iWnzKkYEqMZOXsot48/R2KGxDuFzGJK\nOPfxEvX19RhOCDUbmTiNe4B3JFVJiuL+qHfnekKPp6Eg0ULiEpIsgktqggsFbENCOEDSjpLaZn4i\nm8H5Ax43I6ewiad+grWjfBbBAQawdN2t+W63zmCtceGu0OQ7UiHRGbgRWJNuv7BqNjKp0/g7Lg99\nHvAz8Csz+0c+J/V4GgjNcVP+ZDONg4EVwfPEcMD5OGXcTPEZVIVnI2C5RWxmvXsmILFOMAt04Z9u\nk5fQ5seYBllo8h1pOBN42oysbc+FTFNu2wCLzOx6YIakjQpok8dTEZixxIyrSJ5u+zbwS2rCATZ/\n7XF2oplNi99ZUgtJb0i6WtJQSfFZLd5pFJ6dyF46BIlWwFjgaGLhnxMPvIMzdnyekOU70vA8cFmB\nz1FDvTFSSVW4xe9NgDuAFsB9wJCCWubxVABBuu0GJKjbmtkcYA5OyC4T1gAXA3sBx5rZ0wCSRtOS\n7enBAFWpU7zz8YTK5sDkbA6QEHAr7n//oBkGDFN05lDgfDP2C9/MupjxfjHOEyOTmcbhOMHCJQBm\nNhOXjuvxeEJKtzWzNWb2hpldZmbHx701gBUMZBrtocsD+ZnqScOmwGc5HPc+cErgMGK8DgxWiyVH\nSOwUinVlRCZOY4WZVcdeZLWA5/E0fPoRfg+NeFycvN16RtO3crmoeTJjM+DzbA4ww8y40czdUNds\nj9g84Bs6Tj8U2DdEG8uCTJzGw5JGAZ0knQG8BPy7sGZ5POWPxGl8evguOCmRYJu2k9QixNM8A3zO\njkfMpVXH9UIc1xMQhBj7Ea522Hg2eLUtboG9IEhsUqix05FJ9tSVwKPBYwDwVzO7odCGeRoviqqD\nompeajsy4FRWtdkY+DZu28W4gtiwuA/YkR7TZtD187khjutZy4a4EOPS+nYM1jEyYTzb37EOrqtf\n6Eh0AO6SCPMGJSMyWQi/wsz+gFuhT9zm8YSKotoXJwC4SlHdA9xuEZtSYrNS0Yv1Js0lLjxlZseF\neQIzpzelqD5hk2cmQHKtOE9eZLOecYXEBDMeTbvX5RxG14m7gpZJvBJ2AoMZCymRXEkm4an9k2wL\npYuYpAMkfS7pS0l1nJCkPSUtkPRB8PhLGOf1lCeK6gzcnfXhwJ7B5lcV1U0lMyo9I+nyVQ9qzzQK\nhU+7LRybkvl6xjVk0rF0Bbsxk2YUobiv2KScaUg6GzgH6CcpPhWtPZmnEaZEUlPgJtxC0UxgoqSn\nzCzR479qZofkez5P+RJU414JDAV2s4jFYssXq9nyrqz3/mm6atYgFvcsRs57xphxo6IrqijsQniM\nmbiLmyd8NiND+RCz+pthSWoNgQR5W6aypODFfWvPHVVX3E39/RaxtBXiuZJupvEf3Jf4KVx169Dg\nMTAhJTBXBgFfmdlUM1sFPIhL7U3ES543fA7G3ZHtHOcwHGta9WXGLi1Z3HNHmqy8vSTWpSCQ0m6B\nk8MuLNV+plFAsplpZMJGwJ104z3O4s1i1dYoqq1xBYp/Al5SVAX5vKRTuV1gZlOB64F5wcV9KrBK\nUhi5x+sD38W9Tib/bMAukj4MRN82D+G8njIimGVUAX9J7Mss0RJXWApdvpjLb/rOKrqB6dkI+JYq\ntpN0a6FOImk097ElHx2/RVjd1zyO4POXMt1WopVEz2zGNLNPzewszuUUvj5pL6km1Jo3EiMkTqyz\nPaqjcJmt/wdsiVuDfldRhR6lyUQ181Zq989YAvwL2C7Pc2eyovc+0NvMlko6EHgCl8FVh6ByPcY4\nMxuXp32e4nAI7ublicQ3zFghMRD4GzuM+jMdZr6pqO6yiL1XdCuT0xcXmvot8FEBz/Mjs2nPtN17\n4nrc1Jvl48mYrrhr0Y+JbwSZUrcAK3F9hLLlEzpOa8/GY4ED8jIysKcJ8BfgtFrbozoFiAC/sIjF\nqsP/oahe4TFe0BX6mmXMxP0uO+RrR0ZSy/HFfWa2JliPyJeZ1E5N7I2bbcSfd1Hc82cl3SKpi1nt\nO9Lg/apMT6yoWuC+8F2CxzyL2BsAErfhBOiWAsPLKYbe0IibZVQFzYbqYMYXwDDp6lZ8dsR7nLTP\nvxXVQIus/UyWAonjOPC83djkplnAMcCvC3i6b1jCbgw9sxlDz1zgM6hCZTPg8xSfv7NxSrW5ZSlV\nsSV7jZvOCeM6hvQ/+wWwAHgttiG4ll0KHBLnMACwiL2ly7SS1WwNbI3TDxxWc6wUycWITLKnvpV0\nvqTmgajaBYSz8Pcu0F/ShkEx1DDc+kkNkrrHhNskDcK1p63jMLJBUbXC9CLVTZ4FrsZ9MB5WVMdL\nvIDz4nl3t/JkxGG4b9NT9e0IrOC7Xbbg+q+24Mrv3yxGj4J6mEG3zzrTic+ATQoct74XOBX4HrIL\nlXjqJd16xqfA4WYszmQgSaMljYvrn7KAZnxAeDp9zwOHJkiWDAc+TXQYNaxmIgCtmEJIaruZzDTO\nAm7ATYvAxc3OyPfEZrZa0nm49LWmwO1m9pmkM4P3RwFHAWdLWo278z821/NJjAYbQM8JA6hu1oQ5\nWx5na1q8AqCotgBe4ld7XsRd49YDtqA4ksaNFkXVBDelviTVLCMeM0zSLBb16oNTJB2Fu9EoCWa8\npuhLfwa+NbOCFt2Z2UoARRVbDC9Gim9jIaXTMGNcpoME/VOGAR2CTaPMbJiiuhM3E8gLd/1iALBU\nchGQ4Dt0MU5qPxXDWIdnOQXRlgX52gGZVYTPNrNhZrZu8DguUPDMGzN71sw2MbONzezyYNuowGFg\nZjeb2ZZmtq2Z7WJm+TVIQXswa9B6zN7qrZjDALCIfQIMZcNXr+bUwX+keJLGjZmhwGrg6cQ3JHpK\n7JPkmHkArPfeGvb6azkUl25EcdJtY/gMqvDJVaiwFkEIPyatHn/DOQHYVlG1ynZMidYS7YKXA6gb\nATkYWIa7kU9l13x+za60pRMh6WCldBqxYjtJNyZ5VJ6MSOev1gGgycoPsOYnJ75tEZsIHEPvCXdQ\npT97h1FwTgZuShNLTpZ+7foVHP/Lx9njsqEFta4egru8DYCpRTvpbW9uw1UzryxWC9FGQk3mlIQk\n8lmvPZqE/ikWscWMuX4hk0YcmMN4UeDI4Hmy/t5/AK5I9h2S1C4onG4a1Gv8DagK1hHzIt1M49Pg\n53spHhWBhNR8+TiOPqYPrX4eQ3WLvVM5BIvYOFy22B+LamQjQ1F1wvWNeLzOey7N9nRcpkctYu0q\naTf7VuD0ML4AOXM3BzONJZnoFYWBpCbM7dWRxT3Xx6+3hYKiagP0YK3jP5gkn7ukx0rtJXWO32Zm\n84OoTO3ry9S9VrFk3VxUNP5kVtNau1Z/b0U1JLD9sRTHDgFmB4lLLRjJ67hMsWQz+KxIV6fxdPDz\nriSPSuoRvi3Nl2xLj4/ut2VdfpnBDOIG4AhFFabonKc2hwEvW8SSxVhbA5eapS22Gge0xWW2FB2J\n/vz8l3NYxOwinvYGqu+M3VH69bZw6A98bRFbHawZXAj0q28WJ6kv8BZwQn0nkDSQxVeuZFXbtJ9V\niYFBSm0NZmt7fifp730xcJVFLFXf+N2gZk1mJ5byMK6GI7EWLmvShaeejns8lfg63xMXjRaLTmDg\n6BY0WXNlJrtbxOYCd7Ck658k/pX4j/SEwrFA0oZCwZcj/d1elcGnRzxDQr56EdmMJr/qwZZ8UMRz\nns8hk0+kw/SV+PW2sIhfBI+tGexDmlmcpC44GaVROBmk+ljD8keasvnDvZPNjCU2k3gcN+vO6EZV\nUXUPbE13816Fk+YBl6m6BVWMsUj+N/zpLohXB49vcIsto4HbgMUUd/EvPy5ady5DRj5pEcsm4+Qa\n2sw9li5fvgd5xTg9CSiqbsBg8pOMbsZj9+3EqtZHK6p29e8eOr3oOH01RfwemFk1Wz4yid9tsNQ7\njNDYjLWL4MnWDOoQpPzvbGY3mtWf9Qd8TvWyHnT5dGFwvkQOwzmhAWZMS/J+Mo4Gnk4XGjWz1Wa2\nOHi+DPd965Ph+GlJF56KVVXvGsTpnjazpwLp593COHmhUVStab7817Se//dsjrOIfY/sQc4f0NeM\nVYWyr5FyJDDGIrak3j1TYMZKW9V6MM2XvY5TxC024xhy5WyKf/P0M9AsWBPy5E/8TKPWmkG6gwI5\npYwws+X8cE34AAAgAElEQVTA4RgvQ92e4WZcbsZVZmTTLng4KWbqaew4xsxC0dfKJPTSRlK/2Isg\nnlcp+jcnA+9YxD7O4diRwBn+Cxo6x+LEKWsh0TKHUOBjOBmSoiGphRmf0v/ZDhS5XiLIkpmGy9ry\n5E9/4EuJ9YGBCWsGAEjqGNRg5IyZjaVJ8+cZd8mpEnk1F1NUG+HsfiGfcfIhkz/Gb4FXJL0q6VXg\nFeA3hTUrf4LObxcBl+dyvEVsKq6G4OwQzWrUKKr1cXIGyfoRnIhz1KmPr1tx+z9gP0XVMnxrk56/\nLfBlkDUT050qGpLas9o7jTAI1hf64Vr1HgiclGLXWwgh44gr5h7E+6dsCdVjM02XlrSepCOC56Ml\njeMmnuVTxlPFnyUdI2njJMf1iilpFIJMivvG4haJzg8eA8ys/iYkpeaN35/P3I3nWCSvgsB/ASep\n5cLOQXtFT34cAzxhEVuR5L3bgUvqOb5WgZNFbA7wCYSnIloPJwHvUcUyYB2g2Kq7L/Nhl9U8NSrU\n7oCNlFi67M+4NbZU/TROMbP87+pXtt+AhRsImuxN3EK7HL0lJQv5t2CtQKv77P/EJjxDz+C9Y4FT\n4g+QdBvwBTA2uLEKnXqdRnB3dRFwnpl9CPSRdHAhjAmVpV2P5bMj3sxzlAlAM1rNvx04NwSrGjtH\n41q51sEMM6tXvTWWlDAROFOiLQ89sgQLX/45BXsC1+J6Sk8vVJObNHzDD6tWsKalTwfPn37AN0HI\n72Pg5WQ7mSW9wckF99nuMG0WwUJ7kIk1B5fdVEfw0symmdk/ax3fg5U05SAz+z8zO8LM/pxwWH9c\n2vr+JGSBSXpI0rtxM/WcyCQ8dSdOGniX4PUsIKuF5WKjqFqz3x/7s+vInEJTMYIP1P0MPWsJcG6+\n8cjGjKJaB6fpNS6PYT4GJrO24nYpU4ZuwffbHVmkQr9hMG8yN35+A6XJINyYDxftxk+/2rhQd5GN\niFhoCjOuM+MzSa0lJctwygsXKtIQmmy5gA4bt4nrKzcP2AboYWbH1DPMcHryGcMZZQttXpr90mWB\n9cb1p8mrODQTp9HPzK7AOQ7Mcs96KTQ1cb9reJ0lTArCF/lyP/2f3Ret+R9e9ycf9gNeTRGaypTB\nOAHNheBmJ1Q3v48PR7QAtg3BxpRIGg28Al0fYsC/plMa0cBFrKQHM+mOrwjPl74ETgNA0t3AbODZ\nsB1ykJr7OdWfdGTG6k405Y7YdjOblVHqbhULOINWdODOevaMywKro7wce51XcWgmTmNF0PMWgCCT\nKqwpW9jsDOzBQrbnLtqGMaBF7AvgOyLNHjXz6qJ5cCDwbOJGieOk+hd2g4W953FT+U8kBRLhGkXv\nt8ZSgCyqIN4c+44E6ylr9mf6dbtRGqcRC1GsxleE50s/as8WdwHa45IMCuGQnRJyVxZyBo/mcPzO\nuBv3Sel2Sill4kjnUDImE6dRBYwFekn6Dy72Vw4Ko8lwC5PdqGa73GXUk3AfGUgGeJITiPv9goSs\nKYn2wM1AvQ2VgruyPwQy4YPNbJbbzjds+dAoCpN6+w/g+OD52mn/cXyDW2wsNu5LfxKrqCKVfIQn\nM2rCUwGx1tOFkmgJxDa5mu45NXU6BbgzkzYCqajHoWRMWqcR3GV1xhVknQz8B9jBzF5Jd1wJGUbT\nbgvpvtEMe86+rn/3jHkIGKqoQpm9NEK2BRZYxBLXAU4AXjGr1Su+XszqaFa9AWyoqMIOH17H2pqS\nmrs02tEXmBLyueol9qVn+YYzuXVS4gKoJzv6srrl1xKXS7QAjiCEu/BU1PzvOvM0SYr80hGoHhwJ\n3BO2XbmQ1mkEGvEXm9lPZvZM8KjTS7d8sFXoq9YM7npdqKNGbDbwNkUuJGtAHECS0BTub1qV7+CB\naNsYXI+OnEmsAwl6yayCuC99FUtwIYzSSel8umwpP3Y+p2Tnr3CCup51GXPjbOAHM1aGdReeAR8C\nXRRVNpIeRwOvWcS+L5BNWZFJeOoFSb8Pcom7xB4FtywXtOp/NFvdjDvHH1SAfgP3AydIDJP4a8hj\nN3QOxIU4a2HGB2ZMDukcT7O6Rc5OQ9LWONXc9K1+r5l+C7MG/pjngn5+/Dx7GTa3tUTn+nf2JGEj\n4Dt77/RlZlxfzBMHve1fBLKRSj8F3OJ5OZCJ0zgWV6MwnrW9NN4tpFE50/an7izvIta02pfwF7Oe\nAHZl4KgPcOKNngwIZFi2BV7NeQxpl1gb4LhtLSVtVLPh6pndef6qfXKpDpe0PvBM3KbUce0VHX7B\nmhZTsz1HqAzlCYY8l7Jbm6de+gJfS4yWGFeCplZ3AOdkkiauqDbB1V7kI/AZKplUhG9oZhslPPoW\nw7is6fBdrGo79MUsi9hi4CWGnrWzWVH7KFQ6+wCvW8SW5THGbOq25BxCvGjbop7/5oDfToKcFhlv\nxy3I70V9ce3VrbrRcVouWmZhMo19/7TYjHT5+p7UxDKngoy4qQfC3h8V8fwvAs3ITMngZOBei1jZ\nCKdmUhHeWtKFkh6X9Jik30rZ97stNIqqCSce0JyWC/4H7A9aIeluSVkV5El6S9J7KaomHwGOCs3o\nxkGd0JTEutkMYGZfm9n4hM1vAJvHQqVmLKPJmudxlbDZciIwsr64toT45Tkv0e6HUjuNqbiqdE9u\nxDKngoy4dd6DJcenOyBMggyoG3CyTClRVM1w0jVlE5qCzMJT9wCb437Jm3BVvfcW0qgc2YrW8+bb\n8o4Hu0Y+tgxyyofuAGxP8rj2M8AeiqpjnrY2CoLp9wHEOQ0JAU9JbJTywAwI5B3upbZ43wvk4DTM\n7MdMCqzMMLa/ow1NqoueOZXAVLxoYT7049u9fgamA/+F9vuaTXityDbcC+wWqNam4kDgW4tY4iy7\npGTiNLYws1PN7BUze9nMTsM5jnJjX9y0r4ag/0e207pYI5TvSQhxWcQW4mQwDpZoLrFvjrY2FjYH\nVhNX02CGAbtkWiiZRNm2BjM718ziu+e9DfRXVF1DsD0VAyhNjUY8s4GOaqZ/SepfYlsqkb5M+HUr\nYONkcujFIOgncydwXrL3FVVrnEL3DcW0KxMycRrvS6qJE0sajFsMLzfqOI36kHSopMMSNg/HhaG2\nSRGmiIWomgH/kWpUKD112Qt4KbEgyaz+Yj4ASfvgHE/6jKbYuBFbyZwt3mHSSalkrmPjHiApqxAZ\n1OTLdwFmZHtsmFjEqjFNh6H7QitfdJoFQaHpRnyzT2ecllkpuQn4VYruk1fh7Esq8FlKMnEaOwBv\nSJomaSrwJrCDpMmSirl4VB9DcL0+smEG1G6xGMS1j05Tj/I0sDdVaoZrf1tHndJTw95k/z8BQNK5\nuEr8GJklN7xz3hzePSPl/yTQkLoZeDQHjaH+wFdB2mRpkU2jZ8/XYcUxheyd0ABZD1jEyg6PUmL9\nLovYNFzkotZNjqI6FJeSe1Y+FeCFolkG+xxQcCvC4XOLJFd/lLQO0NbMpsdvN7OsZ0wWsXmK6k3c\nP/UWXOGNJ4Hgjm4PcnCqkgbi0ryH4PodjALOzKjwqv+Ya/lo+HFqNb+jLe+UWDkOLrzUN3iMAoZl\nbNg9z13MVg8szHj/wjKVX416n78xMsNe1R5HX+Brs7UV/ZLGAqea2cwS2DMSGKuotsMpEMzDfS6P\nsEjBCw1zIpOU26npHkWwMVPSNUo5EbhRyk1mQtKmCXdzjwBHmTHTjIyrz9PF5xsgWwM/WcR9ESW6\nSkQyOTBw5tua2Tf1ZzSpq6S1jWg2efo9dr52AUNG7pBi+HTS0enZdeRs1p9YLqHZqTSlj5l9WmpD\nKoxamlOBVNKeuJuTomMRm4C7kZmGu4Z9ANxkEcu3F1DByKv3bZmRbj3j3zjBvPHZXrADZ3EdtVMc\nnwT2z0GLal8yjM83APaidmjqVLLI+AmECTNhJXGS9RYxY6+qR/hi6KUpCrdyV/rs+9I6rPvJ+1kd\nUzim4dNucyFR3bY7sDDItiwJFrEfLWJ/w/0/TyTHFtXFoiE5jbdSvWFmi4F3cPIBWV2wg6n/gWZW\nk+1jEfsJl6mTcQdDSZsC6wcvC6WkWU7sTdANTaIpcA5u4a8OkvrlGpc3s4VmdmnC5hdY1WpTkjjo\nPDWGyiFzKsZUvNPIhVp9NICfgF1LZEstLGIrLGLPlaAjZFY0GKdhEVtezy6Lg59ZX7BTxIzvw90V\nABAoZabjTNxF0ymlwhJJfyrHQsl8CYqSdmNtlz4DfmVGqrv0a3FZUmHxEu3m1FEHkDRe0oa5DBjU\nnGxCOTmNNc02lHhKqmoqyddtZEY/7nppS8n11jazVWZWLv/TiqDBOI0MCKUBSRyPA7sqqu7B69cl\n+qXZ/y7gqoS73BVAWd9V5Mh2wIxY50Qzqs3SZlEdamafhHVyi9hcjjz+Izp8Nw7Y34z5QRvPjXAF\nXbnQDVhjEZsblp15MoumqztC9UD4fk+8Hlqm9KPHhw8CXrsrRxqN0whL+jhQ+T0g0KJ6CmqaPe1r\nRsoeHmb2odlaaePgDueaHIoPK4HE9Yy0FCT7Z2XbV+j8dee4wq2DgMcDuf/seX7kYTx2T6brLAUn\nSPv9glbzZ8Co5mb2i1LbVO4oqg5AGw743QdmtVPtPZnTaJxGiHQD7pW0DU4KYASAGeWSilkO1Kxn\nJCKpo6Qtwz6hpBGSjqzZ0H7Wk2x3Z7tAtgRcCCz3xkUrOuzIwvVLtliaginsf9ETlGexbTnSF/im\nHGsfKgnvNLLEzKYAvwEe4nHGAz0UVSjxeEm7S+oRxlhhEfTJ3jnTdGFF1RzXb/lViXbS2sXaYD3h\nDbKpjcjCVOC4mldNV7/Ntvd0o8pJiphZdZAQkRurW/Wn+bKsOgwWgc/Z/o42ZpRxY7Syoi8JzbMk\nvRAkqXgyxDuNHDCz+4FjbZKtwDVnOjHVvpL6ZpEZFFxs1TsEM/NG0svAIlz++LZkli68I/C1Rexn\nYBvg/4KxmuDCebcBlxTA3OeBfSQ1AwikpMdBSPpge1YtZedr7w9lrPCYgluc92RGYl9wcNXYpevC\nWIF4p5EjZjYpeHovcEJQAY3EDhL7uOdqguurnpGAnpn9E3dBvq9MpCF6Am2DR6wWor7ss5r1DDPe\nMON099yqgd3M7PpCrGEE60WJKdC5SqXXpfPUDej70tuhjBUenwM1d8lBd02vRZWavvz3oY0kalrl\nmtmsLGqCPHinkTcWscm4XO89g01/A56WeB2sg5kNzqavupldw74cTxXdCmButsTuwCbimhvF0oXb\npzlmd9am2tbCzJLJeoSGmb1hZqvjNj3HUn6hpspLlVlRtebJ2wYQXX1TCbq8peMLYGNF1TR4XQ3c\n0BDTuEOiHzMHdQXfvCofvNMIg2ruYiXnBq9aB48hZJEGqaikqAYrqjvZlY+BjxXV7vmYJamtpKZ5\nyJfEpylPM7NhwELgQUl9kvwOzXDO5XVJLcpAKuVrXj62Dc32vSvPcbZj9tbLsaa7UUbV/EEG31yu\n+PF+iUGBdtJHVI5eXLHpx+IePYHQ0rsbI95phMEVNOM19ldU21Bb2+iMTA5XVK2AZ3Ghrk9xlcfD\ngUcU1eHBYnSdcJWkkyRdKunmFAvob+KqhoO2lu6CJ+nIoC92WpKlKceFmZLVO2wHTA3WM04Bflvf\nOQqJRcxYr93rtL6tS14DVTfZiermMW2icqvm/5z9L3oR97kBiOBj9HUIbmh60f2jvVj7t/LkgHca\nYbCCW9iVKuBSat2d127uIvGmxAfxIY4gtHA/sADY1CJ2pUVsjkXsReAAqrmZpiwEJiaZKXTHFQd+\nBtSp9zCzbcwsrq0lE3HqsccAkyW9G6y7xNmo3WMtVFORptZhd2C8xK9h2RfB36PoxBbDAdh47H0s\n7baBRJucBxx77Um0nT2RFP/XEjOF7e5qZ+YUD8zsVTMrp5YF5UIfYLbNHDTdjNUAkqKBBL8nC7zT\nCAEzW0ZLbgYGUqUBoAtAFyXZtRUuC8nd8TtpiluAjsCIRM0Zi9j7NGE3etISGEhdHaWRZhY1s5vM\n0lYqx4eZfgrCTN2AEfEOIOg1cS/wRI6hpd1ZvO5bwF+g1Qyz4mvoSDqR+G5nHWeM5cKey6hS7ovv\n+1/Unh3+NbJUXd7qodZiODQ6NeVMSdScAjgeONf/nbLDO42QCLSvLsPdXZ8GSReyfwh+xkIcUaqb\nDOTnvkdYxFakGPdrVvBdwnHZ2ZY8zLQmiaz2ANwd2W5kGLeX1EHS5mqhTYHduOO1zsAks5JpND1M\nXA8Pi9h8Wi38CPc7ZY2i6kazleuw2ZPvhmVgyCRLu60Vjiy6ReVJLXXbYDa6PrAZ/u+UFd5phMsd\nPMYuwF+AzZPcvdTc8VOl04BjGfXeFdzw9RsSR8RVL9dmdw5nU1ayDYeGpJuVilx6TQwB3mcVk7iD\nFvz890fJcC2nEJjZcjNbEzizvwabnwEOyXHIHYF3y6JbX3LqzDTIp2dIw6Uvq1vUOI0gy2588NL/\nnbLAO40QsYit5FtmAS1xF9Nady9mzDdjGFUaAZwN7M3sbR8B/oRzNEkXju1h+4hjeZHDC54Vk7Wo\no5k9i7uDa8l02sI915WJrs9BwODg+WPA4bFamiwZBEwIzarwmQl0UNOVz0tsHWwbjssQ+m+BbzIq\niX5c9cNZEn3jtg0jXBHTRoF3GmGzCNd3oxtLGFq3U52iOhP4HbCPRWyGGWbGM7g1i1vSjHwLztEU\njDxEHacC0JZvKZ87tiNxzgKL2BRWtF/A5ON+mfUoc/vvjuvFUpYEM6AptP65KYG8fPD/2xWnt+Vx\n9OWsbYcR+6wSnohpY8M7jfA5Dvgvx3MNA3lRUQ1SVJ0V1TGK6h7cjGIfi9RulRs4j1o9QSSaS+wS\nvBwLrKuodizGL5EVLRnOpiznAA4roy9gO+DkmkXO1/84hS9++YdsBlCzFf24Y/yerGpdtk4jYArd\nPltMXJgquCA2RNn9rAkSTvrRafrnZpRrmLFi8E4jZGruXq61S3Dprc/iWnOOwHX729EillJCPYEN\ngNMlRlNlL3HTp8tZ1OOCwlieB3+iG7sMWcAz83PtVVEIYgWWbpFzn/+7lCNP6BFcQDKjy9fD2XDc\nUrts6ff171xSPueIE78Erii1IWVKF8B4hXmSHsi1EZfH0az+XTy5YhF7UlENAJZaJPsexGZ8BZws\nMQ7Yg582gzE39VV7/doiVk5SCLsz8ey5rOjYF1J25ys2iYvBC4CmwNbAhxmN0H7W1vR5Y/Lalill\nyxQ6zDzKjHKTbi8X+gFf2zgzSTeQeyMuDyWeaUg6QNLnkr6UlDR0IOmG4P0PJW1XbBvzxSI2NxeH\nkcDaC+Avz30aODrP8cJmd4484fo07VxLQa1F/aCHwmPAERmPMGK/mex002MFsi9MkmVQASBpIyk/\n7a0GQD+WdJsuITN7K+dGXB6ghE5DUlNcz+wDcAt4xwUtOeP3OQjY2Mz649I4by26oeXB2lTddrOf\nJCzl1rB47O7D+ceC08pJzC/FImd2TsNlTpX7egY44cJ+ccKF8ewF/L3I9pQbfblxyt6wtreLJ3dK\nOdMYBHxlZlODlqcPAocm7HMIcDeAmU0AOkk1PbkbDUEV8m9xEusvAHunuEAUHUXVm3kbtWJlhx0p\n/yKpt5h8bC+duus29e2oqFrgQlll3xXPIrYUmANsKJH4uXgY2FNSOagml4bF3TdlZbuWUBap4BVP\nKZ3G+kB8J7QZwbb69ulF4+Qw4FKL2Pe43PwdSmxPjF3LWMyvFhaxal69ZCnTd8kkmWA74NtASbYS\n+Izb3r6CuGp4ADNbhBMx7FgSq8qB11rtSov3v/KZU+FQyoXwTLWAErNdkh4nqSru5TgzG5eDTeXM\nI8A/JNpSVdNcqPRFZ8+PPIvNHnmcmYO7AGeWoTZTbRatt4i3fnuiVL0eNDkumb0Sndnvon8y5MqH\nSmFijkxkxH7NuHzh9YlvmFmdbY0FSf1pRR/2HrxT5pechomkPVnb9ydnSuk0ZgLxbU1742YS6fbp\nFWyrg5lVhWlcuWHGHImbgXVxIao/4xo+lZbPDt+JTZ+83Yx7Sm1KRqzouIAVnZrh1tJGkaxf+Xa3\nb8zqljsBRxXZunyYQMtFF5g18itjIuIKdsEYxKT6d27YBDfS42KvJdUpPs6EUoan3gX6S9pQUgvc\nl/ephH2ewtU3IGkwMN/MZhfXzPLBjP8z41ucZs52iipdB72Co23u3ZLlXVrQcfqDpbQjO+TUgLtP\nWkHvN5PLYh962iHscdldFkmrHFxuTAB2zFEqpeGyPfcwmGkWqdXR0ZMHJfuABYJh5wHP4ZqiPGRm\nn0k6U9KZwT5jgG8kfYW7Kzwn5YCNiGDh8x1CmGrmxW6Xb84hp7xvz15fST2WXSbaiP3f4tQhhye+\nqaja4NZlriu6ZXlgEfsR+Jm6ireNm6GspAVfldqMhkRJi/sCsbtnE7YliPzZeUU1qnJ4AdgPeLpk\nFnT7bAe6fZY4OyxrgjWMYYr+OBj4r6K6J0GWfgTwlkWsVNLu+TCBFe12kZiarNBP0pXAq2b2TAls\nKw1L1tmMeX1/KrUZDQk/la1cYovhpWQ34LUS25ATFrG3gck88PgjErsDBKGd3wJXl9S43JnAfx+9\nkCCkm4RbgZeKaE/pmb3tDjz9781LbUZDwjuNCkTiTq74cSawjqLqUxIbXBhna8ohgyt3LmHIyF34\nzYZHKqqzgYsZe3V7/rY8MSGjUphAr7c74BoL1cHMvjHLW52g7JH0kqSJksbQ/aWenL3NH0ttU0PC\nO43K5B6WdV0CvIgLURWf6qY7AZOD9ZWKxCL2Hn3eGk6naT8A27Kyzd5MOL8Ta1r+XO/B5ckH9Hy3\nK01WNroC2ATWw9UxHchTDAI+K7E9DQovWFiBmPEKgKK8gAtR3V50I0a9ezO7jvyg6OcNGYvYc7hk\nDCT2A9qVfa1JCixiyxXVZC5peXMjr0mYCmyGeJ/D2JS6qfyePPAzjcrmVWC3rOS+w2LE/j+w4SuV\nIOaXDSOAluWkoZUDE4Cd0u0gad2GIscjqb1UJ/XcZcj9iotozZQybtVbkXinUdl8g5P73qCYJ1VU\nzWj74w60/2FcMc9bBHoD21P+GlrpqNdpAL8BLiqCLQVF0t7ARySIUMbEKumw4cZ8eeCc0ljXcPFO\no5KpsjbAG7hmQ8VkW2B6hRW/ZUJiD45KJBOncTdwvKSKDU9LGoj7Pc41s7uT7vTVgXvy7PUDimpY\nI8A7jQpFQsBkvvzFFxTfaeyOq0pvaMT14KjMdQ3gSx67p7uarng3VZjNzKYAjwM9im9eaLwPbBYU\nACdn/oZb0nLhlOKZ1DjwTqNCCTSGnuHFK7pQRKch0YbF6+5DA3QaZsw3Y1gFOwwsYsb0XVZR3XIg\nacJsZnaOmWW0QCxptKRxNf3WywBzpFcgbjerK61/fr5IJjUavNOobB5gzpbr4BrwFEf6WqsP58nb\n96MBOo0GQ/NlPwTP8gqzSaqSNA44GdiDBCckaVdJLWteR9VUUfVUVM1zPWcKOzaRNDKrY6Jqzs7X\nd2HE/o21cVvB8E6jsnnbqpsehWsUNLgoZ2z741Fs+Op8i9isopzPkz2HnnYB/f83n3rCbHEziI9S\ntFL+GLgMl6UHdZ3QRexOF0V1jKK6B/gBmMQHLNMI/awL9IEiOiqE7L7vgJezPKYvMNMitjzPc3sS\n8E6jgomTwS7eYnjLBX3p8/qr9e/oKRm9Jozl+IOXUqWe9ew5ADeD2ArnHGphZo+Y2Ys4ifiafusA\nikpUcT978x5uJvIWMJAq1uNJ7uY/TOEWegJVwBhF1Q9AUhNJu2Tz65jZUjMbm80xuJ7pn2d5jCcD\nvNNoGBTPafx6s8/o/XbjEbyrQIK6hIdI1iukNvHZYsenHC+h37qi6g08iesIeJRF7ECL2K0Wselm\ntsbMTrXVtrOtsu40YTvgFWCCojoe6AD8JfEcklpLOk7SY5ImhbB+4p1GgfBOo2HwFjAo7FhyIkGY\noaFmTjU0HuSn/idK1cl7hjjissUso8V/RbUHrhfOu8D2FrE30+1vEVtlERuJ+9xcSxWbmNlBSXbt\nAByOUzjYhnxrZT4fuiufHLUg5+M9KfFOoyFQZZ344KR5uC9bIdkYWIOTafCUNxNptbAJqv6nRIdk\nOyTOIOpDUR0OPAwcZxG7NEFSPi0WsU+BU4FHFNV6SWyZbWbHsPaGJL9amYW9NuXLgyqlv3tF4Z1G\nw6AJP202lcKHqHYHxlvEGrWwUSVgETPazf4PPSbNAo7JdzxFdQZwM3CARSzbRemYTU8Do4FHFV2b\ndZVA1rOfJLaKQbd25bBTKqMFcYXhnUYDwIyv2O+P/6aATkNiAJ8cdRQ+NFVJPMghp7enycq8/meK\n6gLgj8DuFrH387Tp78Bs4Jpkb2Y7+0lBd2CNRcw3XyoA3mk0HN4AhhRQvHAkL/xzXy6fN7yCxfwa\nG5NZb9I8Lmm5Tq4DKKpTgd8Be1nE8m6bGizSnwQcqai2zne8FPhF8ALinUbD4Rvc/3OjgozebGl3\n5vdrxopOu1O5Yn6NiiCM+CBwbC7HK6phwN+A/Sxi00K0ayFwOW7WUQi80ygg3mk0EIILxGu4Fqzh\n03ZO6+BZJYv5NUYeAoYpWkc+PC2K6mDgBtwaRiH6pf8L2FpRhR9Sfe/U/fho+KLQx/UA3mk0LN6+\nYBYPPloYyevTdvmIdT/6gMoW82t0BBf8Z6hueqNERlIziuow4A7gEIvYRwWyawWuzuOfoYdUX7n0\nQJ659cgK74tStnin0ZBo98MTfLPvZhJtwhpSQopKtP9+D87Z5njvMCqS3/DuWQfQ66376tsxCEn9\nCzjQIlbo/u/3Al1wNRmhIFWfztJ1WrOyQ28quy9K2eKdRkNiy4fGs/7Earp+elyIoz7MQw8fg2v2\n5OPEFYhFbDFb33sIpw4ZrKhSNuxSVCOAa4H9LWLvFcGuNbjq8H8oqnCuRUee8CG934rpTflQagHw\nTpQRd5EAAA6LSURBVKMBYRGr5rCTX+LsbUOJ50psCuzG0DPXBV709RmVi12+4B1kVwL3KVq7+ZKi\n6q+oHsPpRO2TGJKSGC0xrkDhnieA1cAvQxltqwc24+hjx1D5fVHKFu80Ghodv3uJpqvCWgy/F1jG\n/f/7P37c9I2QxvSUjquAecBsRfW0ovqjoroOJ0MzAdjcIvZZ/AFBs689SSKNHgbBjch1wK+zPVbi\nAImDEzbvTLvZ4yu9L0o5451Gw2M8rnI7DJYAGzBzcHdGT0z8cnoqDItYtUXsEGBL4C6CIjics7gi\nhYx4/KykJtwjcZjEHRJHppIpyYKHga0U1eZZHjcXSCzg2xnnBD0FQtYAIg6SzMwKVdRWUQSihT8D\nfSxi8/IaS4wBDmTdj5YxZ+ue/s6t8pHYCNjGjCeyOKYTboZxZuwzINELOAI4CHjeLHmFd8bniKoK\nWNcidk4eY7TH9fTobBFbmY89jYFcr5t+ptHAsIitAt7m/ZOHhRB/Hs56733MCQfd6R1Gg6EVcItU\nawaRlmRtcM2YYcYNZhyQzGFIHB84qEwZBRyraHI5dIleEn3rGWMQMMk7jMLinUbDZDyfH34qsEU+\ng5gxnzN3mEuHmb5/RgPBjM+A6TgJ8qRIrB/CqdoCGYcxLGLfA2OAUxJskcTpwAfArvUM40NTRcA7\njYbJaww/ZLUZOS1eS3SU2FlRtQMG4kUKGxp/wrVQrYPEqcDLEnn1ZjFjtFltCX2JZhJvSlwpsZdU\n5/pzI3Ceomoat60/rjPg3mbUp1rrnUYR8E6jYTIBt7DYNsfj++BafO4GvGcRWxKaZZ6SY8YrZkxO\n3C5xBHApMNSMVQU4dTVwAS7B4kISZiJBMeGPsDYjyowvgCHJ7I0nqCofjHcaBcc7jQaIRWwZMAn3\nJcr+eGOyGRcC+wEvhmmbp6x5D/hFcKEOHTOqzZhoRpUZB8f1uAdAYnOumtWRUe/eFV8TkrhfCvoD\niy1iswphu2ct3mk0XF4CfpHnGPsDL4Rgi6cCMGOaGR+X0IRlLO6+mu8HdiL7mhAfmioS3mk0XJ4A\nDpeqL8gg66QOimpToDMuN9/TQMkmi6rQmPEtNJkOQJcvfyI7CRDvNIqEdxoNl0lAC9rP2gnXQjNb\nhgEPB01zPA0QiTeBT8tMDXY4zZY+yemDmlOVsiVsMrzTKBLeafx/e/ceNFVdx3H8/fEBRUAEQgGv\nKBoxTV4gL6jk46VS0/Iy2YgpZjOa9wtjOuq4PtOUgFNiVmqkiHmhVBByAMER1ExEAwQvpJCUCmGm\nT6AQ129//H6PrA97OUs95+zu833N7PDbc367+90fz57vnnP2fH91KpZneJxjblpNBZPwSFyijmt6\nE5LG79oqPlcVNhPOBVRNNVgzmm1D51PZsXkCcFGSx6hJOwP9CV+UXBvzpFHfJnHQ+MHAjbGGUEkS\nDwK307B+Emt77ET4FZarX6viv9VYDfZ24AdqUqcEfc8DpvlFfenwpFHf/sh2m/vR6cNvA7NaDkNI\nXB/LQLR2EtDAuu5DeGDqJ35oqu4No0qrwcbCifOBkmX+Y8XeK4GfphGX86RR1yxnG4En2GHVoXy2\nSukSoNC3snBMuPeCdXz12kSHBlztKlQepMqMAa5Rk7Yv0ec0YLnlbE5KMbV7njTq3yS6vdcjtl8i\nFJ37vRnvF+g7jC4rZzD8uBX0e3Z2eiE6V9AMYClhoqatxAv6RuB7GanypFH/ZjLs5I50WDOZMoch\nzGjmmj7z6fzhBJ9wyWUt/g1eSDi3MbhAlyOAXsDkVANr5zxp1DnL2Rp2bH6aG7tMLHcYIn5z819N\nuaoRr/C+Chivpq1+gjsCGBOnjXUp8aTRPkwiJINyjgXWAa+0bTjOVeQh4E0gB2HOGDVpEGGysXFZ\nBtYe+SRM7YCa1Bl4HTjfcvZ0kT4dgXnAzZazx9KMz7ly1KTehOswOgFdCbP2jbScjck0sBrmkzC5\noixnawi7+HfE5FDIJcAKYGJqgTmXkOVsJTAA2A/YwXLWxxNGNnxPo52I5yumATMsZz9rta4PsAgY\najlbnEV8zrl01dSehqSekmZKelPSDKnYFI9aJmmhpPmS5qYdZz2Jv0S5HLheTerbavUo4F5PGM65\ncjLZ05A0GvjAzEZLuhboYWbXFej3NjDYzD4s83y+pxFJajSz2UXXN+kWoB9hsp2dgYHAj4CBlrPV\nacSYlnJj0V74OGzhY7FFTe1pAN8Exsf2eODUEn09GVSmscz6HxOSxuOE+j5nEU6Q11XCiBqzDqBK\nNGYdQBVpzDqAWpdVLf3eZrYytlcCvYv0M+ApSZuAu81sbCrR1THL2ceEMtLOOVexNksakmYCfQqs\nuiH/jpmZpGLHyI40sxWSdgFmSlpsZs/9v2N1zjmXTFbnNBYDjWb2D0l9gVlm9oUyj8kBH5vZVnVm\nSiQd55xzRWzLOY2sDk9NAYYTfrUznHB8/TMkdQYazGy1pC6E+aqbCj2ZnwR3zrl0ZLWn0ZNQx38v\nYBlwppk1S9oNGGtm35C0L1suNOsAPGhmt6QerHPOuU/VxcV9zjnn0lEzZUQknSBpsaS34rUdhfr8\nPK5/RdLBaceYlnJjIensOAYLJT0v6YAs4kxDkr+L2O8QSRslnZ5mfGlK+BlpjBfLvippdsohpibB\nZ6SXpOmSFsSxOC+DMNucpHslrZS0qESfyrabZlb1N6CBMNtcP6AjoXDZwFZ9TgKmxvZhwJys485w\nLIYAO8f2Ce15LPL6PQ08AZyRddwZ/l10B14D9oj3e2Udd4ZjcTNwS8s4EAogdsg69jYYi6HAwcCi\nIusr3m7Wyp7GocASM1tmZhuACcC3WvX59IJBM3sR6C6p2PUftazsWJjZC2b273j3RSg4H3g9SPJ3\nAXAZ8CjwzzSDS1mSsRgGPGZm7wKY2Qcpx5iWJGOxAugW292Af5nZxhRjTIWFSxQ+KtGl4u1mrSSN\n3YF38u6/G5eV61OPG8skY5Hv+8DUNo0oO2XHQtLuhA3GnXFRvZ7ES/J3sT/QU9IsSS9LOie16NKV\nZCzGAl+UtJwwf8wVKcVWbSrebmb1k9tKJf2gt/7pbT1uIBK/J0nHAOcDR7ZdOJlKMhZjgOvMzCSJ\n+i1Lk2QsOgKDgOOAzsALkuaY2VttGln6kozF9cACM2uU1J9w8fCBZnVZTqecirabtZI03gP2zLu/\nJyEjluqzR1xWb5KMBfHk91jgBDMrtXtay5KMxWBgQsgX9AJOlLTBzKakE2JqkozFO4RCoWuBtZKe\nBQ4E6i1pJBmLIwh12DCzpbE46gDg5VQirB4Vbzdr5fDUy8D+kvpJ2p4wdWnrD/0U4FwASYcDzbal\nvlU9KTsWkvYiXOPyXTNbkkGMaSk7Fma2r5ntY2b7EM5rXFSHCQOSfUYmA0dJaogXzx5GmNGx3iQZ\ni8XA8QDxGP4A4K+pRlkdKt5u1sSehpltlHQp8CThlxH3mNkbki6M6+82s6mSTpK0BPgE+F6GIbeZ\nJGMB3AT0AO6M37A3mNmhWcXcVhKORbuQ8DOyWNJ0YCGwmXAhbd0ljYR/Fz8Bxkl6hfDl+YdWZgqG\nWiTpYeBooJekdwjzrHeEbd9u+sV9zjnnEquVw1POOeeqgCcN55xziXnScM45l5gnDeecc4l50nDO\nOZeYJw3nnHOJedJwVU3S5ZJel/RbSaeUKn9e4LF7SzorYd/7JJ0R22MlDdzWmLeVpAvbuh6UpFtj\nKfBRrZZfJemevPtnS3qiLWNxtcmv03BVTdIbwHFmtrxEnwYz21RgeSMwwsxOSfA644A/mNnEcn1r\nmaRmoIe1+uBLaiBcSX0J4SrxecCxZrYs9SBdVfM9DVe1JN0F7AtMl3SlpPMk3RHX3SfpLklzgNGS\njo6TC82X9GdJXYGRwNC4bKsqppJ+ESfqmQnsmrd8tqRBsf2xpNHx2/lMSYdLekbSUkmnxD4N8Rv8\n3DiRzQVxeWN8rkckvSHpgbzXGCnptdh/dFx2s6QRsX2QpDlx/URJ3fNiGynpRUl/kXRUkbG7VdIi\nhYm4zozLpgBdgXkty1rEpHsx8EtgFOEq6mUV/pe59iDrSUL85rdSN+BtoGdsDwfuiO37CHVzWvaW\npwBDYrszoXzE0YS9h0LPezowg1Dhsy9hzoHT47pZwKDY3gx8PbYnxsc0AAcA8+PyC4AbYnsH4CXC\nBECNQDOwW3ydPxEqDn8OWJwXS7f4bw64OrYXAkNjuwm4LS+2W2P7RGBmgfd2Rt572xX4G9A7rltd\nZrwfBpYCHbP+v/dbdd58T8PVKgMeMbOWwyzPA7dJuoxw+GUTpcugDwUesmAFYWa/Qtab2ZOxvQiY\nFZ/7VUJiAPgacK6k+cAcoCewX4xxrpktj3EuAPYmJJL/SLpH0mnA2vwXlNSNMPPic3HReOAreV1a\nDqHNy4sh35F57+194BngkBJj0fK6XYEvE2rS7Vqmu2unPGm4WrampWFmowgTTu0IPC9pQILHJ5lb\nY0NeezOwPr7eZj5b8PNSMzs43vqb2VPx+dfl9dlE+Aa/iTC73KPAycD0CuNsec5NFC86qiLtUpqA\n+wnF/G5L+BjXznjScLWk6MZPUn8ze83MRhMODw0AVgE7FXnIs8B3JG0nqS9wzP8Q15PAxZI6xFg+\nH0uPF4u1C9DdzKYBVxPmtIDw/mRmq4CP8s5XnAPMriCe59jy3nYh7FXNLfUASV8izBc9Cvg10E/S\n8RW8pmsnaqI0umvXrFW79f0WVyjMVLiZcOhoWly/SdICYJyZ3f7pA80mSTqW8EuhvxPON5R7/ULx\nAPyGcJhonkIt+veB0wrE2/KYnYDJkjoREsVVBd7fcOCumHyWUrxk9VY/f4zvbQhhGlMDromHqQr2\njzH/CrjSzNbHZRcB9yvMZld3c2e7bec/uXXOOZeYH55yzjmXmCcN55xziXnScM45l5gnDeecc4l5\n0nDOOZeYJw3nnHOJedJwzjmXmCcN55xzif0X/gf3x0rBf6gAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pl.plot(X[:,0:1], y_fixed + y_conf, 'g')\n", "pl.plot(X[test_sample,0:1], response_lmf, '.b-.')\n", "pl.plot(X[test_sample,0:1], response_rf, '.k-.')\n", "pl.ylabel('predicted y')\n", "pl.xlabel('first dimension of X')\n", "pl.legend(['ground truth', 'mixed RF', 'RF'], loc=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example 2: Recovering interactions and evaluating feature importances\n", "In the second toy example we predict held out simulated data when the phenotype is caused by an\n", "interaction of features and the random effect. Now our feature vector is a sorted array of integers ranging\n", "from 0 to $2^8−1=255$. We can easily convert this into a 8D feature vector using the binary encoding of\n", "each integer, i.e 0 $\\rightarrow$ (0, 0, 0, 0, 0, 0, 0, 0) , 1 $\\rightarrow$ (0, 0, 0, 0, 0, 0, 0, 1), . . . and 255 $\\rightarrow$ (1, 1, 1, 1, 1, 1, 1, 1)." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "sp.random.seed(42)\n", "n_samples=2**8\n", "x = sp.arange(n_samples).reshape(-1,1)\n", "X = utils.convertToBinaryPredictor(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our simulated fixed effect shall be an interaction of the fist and third feature dimension." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "y_fixed = X[:,0:1] * X[:,2:3]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, like in the previous example, we simulate confounding by adding a sample from a multivariate\n", "gaussian with a squared quadratic covariance function." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "kernel=utils.getQuadraticKernel(x, d=200) + sp.eye(n_samples)*1e-8\n", "y_conf = y_fixed.copy()\n", "y_conf += sp.random.multivariate_normal(sp.zeros(n_samples),kernel).reshape(-1,1)\n", "y_conf += .1*sp.random.randn(n_samples,1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In addition, we add a small amount of independent gaussian noise.\n", "After splitting, we fit, both the mixed RF and the random forest on the training sample. Then test\n", "sample is used obtain predictions." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "(training, test) = utils.crossValidationScheme(2, n_samples)\n", "lm_forest = LMF(kernel=kernel[sp.ix_(training, training)])\n", "lm_forest.fit(X[training], y_conf[training])\n", "response_tot = lm_forest.predict(X[test], kernel[sp.ix_(test,training)])\n", "# make random forest prediction for comparison\n", "random_forest = LMF(kernel='iid')\n", "random_forest.fit(X[training], y_conf[training])\n", "response_iid = random_forest.predict(X[test])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So far everthing is analog to the previous example. In addition the mixed RF allows us to predict the\n", "fixed effect only. All we need to do is dropping the cross covariance from the parameters of the prediction\n", "function, i.e" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "response_fixed = lm_forest.predict(X[test])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results of all predictions an the ground truth can be observed in the figure below. To\n", "visualize the whole binary predictor matrix $\\mathbf{X}$ in a single dimension we just need to plot the prediction\n", "against the original (decimal) feature vector $\\mathbf{x}$." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pl.plot(x, y_fixed, 'g--')\n", "pl.plot(x, y_conf, '.7')\n", "pl.plot(x[test], response_tot, 'r-.')\n", "pl.plot(x[test], response_fixed, 'c-.')\n", "pl.plot(x[test], response_iid, 'b-.')\n", "pl.title('prediction')\n", "pl.xlabel('genotype (in decimal encoding)')\n", "pl.ylabel('phenotype')\n", "pl.legend(['fixed effect', 'fixed effect + confounding', \n", " 'mixed RF', 'mixed RF (fixed effect)', 'RF'],\n", " bbox_to_anchor=(1.2, 1.4), ncol=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we evaluate the feature importances which are automatically computed while fitting the forests. These scores are plotted in the figure below." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\ngPBeRgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "feature_scores_lmf = lm_forest.log_importance\n", "feature_scores_rf = random_forest.log_importance\n", "\n", "n_predictors = X.shape[1]\n", "pl.bar(sp.arange(n_predictors), feature_scores_lmf, .3, color='r')\n", "pl.bar(sp.arange(n_predictors)+.3, feature_scores_rf, .3, color='b')\n", "pl.title('feature importances')\n", "pl.xlabel('feature dimension')\n", "pl.ylabel('log feature score')\n", "pl.xticks(sp.arange(n_predictors)+.3, sp.arange(n_predictors)+1)\n", "pl.legend(['mixed random forest', 'random forest'])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.9" } }, "nbformat": 4, "nbformat_minor": 0 }