{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n# Data depth computation for multiple distributions \n\nSample usage of depth computation for multiple distributions.\nIt will plot samples based on different depth notions.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from depth.model.DepthEucl import DepthEucl \nimport numpy as np\nfrom matplotlib import pyplot as plt" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "np.random.seed(2801)\nmat1=[[1, 0],[0, 2]]\nX1=np.random.normal([0,0],1,(100,2))\ndist1=np.repeat(0,100)\nX2=np.random.normal([5,5],1,(100,2))\ndist2=np.repeat(1,100)\nX3=np.random.normal([-5,5],1,(100,2))\ndist3=np.repeat(2,100)\nX=np.concatenate((np.concatenate((X1,X2),axis=0),X3),axis=0) \ndists=np.concatenate((np.concatenate((dist1,dist2),axis=0),dist3),axis=0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "plt.figure()\nplt.scatter(X1[:,0],X1[:,1],color=\"blue\",label=\"First distribution\",)\nplt.scatter(X2[:,0],X2[:,1],color=\"red\",label=\"Second distribution\",)\nplt.scatter(X3[:,0],X3[:,1],color=\"green\",label=\"Third distribution\")\nplt.xlabel(\"First component\")\nplt.ylabel(\"Second component\")\nplt.title(\"Multiple distibution samples\")\nplt.legend()\nplt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "modelMult=DepthEucl().load_dataset(X,distribution=dists)\nmodelMult.L2(X)\ncolors=[\"blue\",\"red\",\"green\"]\nplt.figure(figsize=(15,5))\nfor i in range(3):\n plt.subplot(1,3,1,)\n plt.scatter(modelMult.L2Depth[0][modelMult.distribution==i],\n modelMult.L2Depth[1][modelMult.distribution==i],color=colors[i])\n plt.subplot(1,3,2)\n plt.scatter(modelMult.L2Depth[0][modelMult.distribution==i],\n modelMult.L2Depth[2][modelMult.distribution==i],color=colors[i])\n plt.subplot(1,3,3)\n plt.scatter(modelMult.L2Depth[1][modelMult.distribution==i],\n modelMult.L2Depth[2][modelMult.distribution==i],color=colors[i])\n \nplt.subplot(1,3,1,)\nplt.xlabel(\"Depth w.r.t. distribution 1\")\nplt.ylabel(\"Depth w.r.t. distribution 2\")\nplt.subplot(1,3,2)\nplt.xlabel(\"Depth w.r.t. distribution 1\")\nplt.ylabel(\"Depth w.r.t. distribution 3\")\nplt.subplot(1,3,3)\nplt.xlabel(\"Depth w.r.t. distribution 2\")\nplt.ylabel(\"Depth w.r.t. distribution 3\")\nplt.legend([\"First distribution\",\"Second distribution\",\"Third distribution\"])\n\nplt.suptitle(\"Multiple distribution using L2 depth\")\nplt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "modelMult.halfspace(X)\ncolors=[\"blue\",\"red\",\"green\"]\nplt.figure(figsize=(15,5))\nfor i in range(3):\n plt.subplot(1,3,1,)\n plt.scatter(modelMult.halfspaceDepth[0][modelMult.distribution==i],\n modelMult.halfspaceDepth[1][modelMult.distribution==i],color=colors[i])\n plt.subplot(1,3,2)\n plt.scatter(modelMult.halfspaceDepth[0][modelMult.distribution==i],\n modelMult.halfspaceDepth[2][modelMult.distribution==i],color=colors[i])\n plt.subplot(1,3,3)\n plt.scatter(modelMult.halfspaceDepth[1][modelMult.distribution==i],\n modelMult.halfspaceDepth[2][modelMult.distribution==i],color=colors[i])\n \nplt.subplot(1,3,1,)\nplt.xlabel(\"Depth w.r.t. distribution 1\")\nplt.ylabel(\"Depth w.r.t. distribution 2\")\nplt.subplot(1,3,2)\nplt.xlabel(\"Depth w.r.t. distribution 1\")\nplt.ylabel(\"Depth w.r.t. distribution 3\")\nplt.subplot(1,3,3)\nplt.xlabel(\"Depth w.r.t. distribution 2\")\nplt.ylabel(\"Depth w.r.t. distribution 3\")\nplt.legend([\"First distribution\",\"Second distribution\",\"Third distribution\"])\n\nplt.suptitle(\"Multiple distribution using halfspace depth\")\nplt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "modelMult.simplicialVolume(X)\ncolors=[\"blue\",\"red\",\"green\"]\nplt.figure(figsize=(15,5))\nfor i in range(3):\n plt.subplot(1,3,1,)\n plt.scatter(modelMult.simplicialVolumeDepth[0][modelMult.distribution==i],\n modelMult.simplicialVolumeDepth[1][modelMult.distribution==i],color=colors[i])\n plt.subplot(1,3,2)\n plt.scatter(modelMult.simplicialVolumeDepth[0][modelMult.distribution==i],\n modelMult.simplicialVolumeDepth[2][modelMult.distribution==i],color=colors[i])\n plt.subplot(1,3,3)\n plt.scatter(modelMult.simplicialVolumeDepth[1][modelMult.distribution==i],\n modelMult.simplicialVolumeDepth[2][modelMult.distribution==i],color=colors[i])\n \nplt.subplot(1,3,1,)\nplt.xlabel(\"Depth w.r.t. distribution 1\")\nplt.ylabel(\"Depth w.r.t. distribution 2\")\nplt.subplot(1,3,2)\nplt.xlabel(\"Depth w.r.t. distribution 1\")\nplt.ylabel(\"Depth w.r.t. distribution 3\")\nplt.subplot(1,3,3)\nplt.xlabel(\"Depth w.r.t. distribution 2\")\nplt.ylabel(\"Depth w.r.t. distribution 3\")\nplt.legend([\"First distribution\",\"Second distribution\",\"Third distribution\"])\n\nplt.suptitle(\"Multiple distribution using simplicial volume depth\")\nplt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "plt.figure(figsize=(15,5))\nfor i in range(3):\n plt.subplot(1,3,i+1,)\n plt.scatter(modelMult.simplicialVolumeDepth[i][modelMult.distribution==i],\n modelMult.halfspaceDepth[i][modelMult.distribution==i],color=colors[i])\n\n plt.xlabel(f\"SimplicialVolume depth w.r.t. distribution {i}\")\n plt.ylabel(f\"Halfspace depth w.r.t. distribution {i}\")\n plt.title(fr\"Distribution {i} depth$\\times$depth plot\")\nplt.show()" ] } ], "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.13.4" } }, "nbformat": 4, "nbformat_minor": 0 }