{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# A Quick Demo of the James-Stein Estimator\n", "\n", "Kyle Cranmer, June 25, 2015\n", "\n", "[![](https://i.creativecommons.org/l/by/4.0/88x31.png)]( https://creativecommons.org/licenses/by/4.0/)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## The Problem\n", "\n", "\n", "Consider a standard multivariate Gaussian distribution for $\\vec x$ in $n$ dimensions centered around $\\vec\\mu$\n", "\n", "\\begin{equation}\n", "f(\\vec{x}|\\vec{\\mu}) = \\prod_{i=1}^{n} \\frac{1}{\\sqrt{2\\pi}} \\exp\\left(-\\frac{(x_i- \\mu_i)^2}{2}\\right)\\;.\n", "\\end{equation}\n", "\n", "\n", "We want to compare the mean squared error\n", "\\begin{equation}\n", "E[||\\bar{\\vec x}-\\vec\\mu||^2])\n", "\\end{equation}\n", "\n", "of the sample mean (an unbiased estimator)\n", "\\begin{equation}\n", "\\overline x_i = \\frac{1}{m} \\sum_{j=1}^m x_{ij}\n", "\\end{equation}\n", "\n", "to the James-Stein estimator\n", "\\begin{equation}\n", "x_{JS} = \\left( 1 - \\frac{n-2}{||\\bar{x}||^2} \\right) \\bar{x} \n", "\\end{equation}\n", "\n", "\n", "(where $i$ is the component of the vector and $j$ is an index over the samples).\n" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "# set up the plotting to look a little nicer.\n", "from matplotlib import rcParams\n", "rcParams[\"savefig.dpi\"] = 100" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "def jamesSteinEstimator(x):\n", " return x*(1. - (x.size-2.)/sum(x*x))" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "def RMS(x,mean):\n", " return sqrt(sum((x-mean)*(x-mean)))" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "def doRun(nDim,nSamp=1000):\n", " mean=zeros(nDim)\n", " data = zeros(nDim*nSamp).reshape(nDim,nSamp)\n", " for i in range(nDim):\n", " mean[i] = 0.5 #set value of the mean's components here \n", " data[i,:] = random.normal(mean[i],1,nSamp).T\n", " data=data.T\n", "\n", " avRMS_js = 0\n", " avRMS_mle = 0\n", " for x in data:\n", " avRMS_js += RMS(jamesSteinEstimator(x),mean)\n", " avRMS_mle += RMS(x,mean)\n", " avRMS_js /= nSamp\n", " avRMS_mle /= nSamp\n", " return (avRMS_js, avRMS_mle)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false, "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "nDimToTest = linspace(2,20)\n", "av_js = zeros(nDimToTest.size)\n", "av_mle = zeros(nDimToTest.size)\n", "for i,nDim in enumerate(nDimToTest):\n", " [av_js[i], av_mle[i]] = doRun(int(nDim))" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "image/png": [ "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\n", "SZIkSZK0avwGxwOljWOntloAAAAASUVORK5CYII=\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(nDimToTest,av_js,c='b') #James Stein in blue\n", "plt.plot(nDimToTest,av_mle,c='r') #MLE in red\n", "plt.ylabel('Mean Squared Error')\n", "plt.xlabel('Dimensionality')\n", "plt.legend(('James-Stein', 'MLE'), loc='upper left')\n", "plt.savefig('james-stein.pdf')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#Make a figure of Gaussian Point Cloud\n", "from mpl_toolkits.mplot3d.axes3d import Axes3D" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "examplePointCloud = np.random.normal(3.,1.,3*50).reshape((50,3))\n", "fig = plt.figure()\n", "ax = fig.add_subplot(111, projection='3d')\n", "\n", "ax.scatter(examplePointCloud[:,0],examplePointCloud[:,1],examplePointCloud[:,2])\n", "ax.view_init(30, -100)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Slideshow", "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.10" } }, "nbformat": 4, "nbformat_minor": 0 }