Skip to content

Instantly share code, notes, and snippets.

@hirokidaichi
Created August 20, 2021 09:16
Show Gist options
  • Save hirokidaichi/3013ceffeb7f43bbb0b4b85b96b41af4 to your computer and use it in GitHub Desktop.
Save hirokidaichi/3013ceffeb7f43bbb0b4b85b96b41af4 to your computer and use it in GitHub Desktop.
IRT少ない回答数から、DXCの総合点数を推論する。
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "IRT少ない回答数から、DXCの総合点数を推論する。",
"provenance": [],
"mount_file_id": "1vkuam8m25efJHhWgyv8dgHgL6FraduIx",
"authorship_tag": "ABX9TyPEico2Dtu2nY6fwq4R2L70",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/hirokidaichi/3013ceffeb7f43bbb0b4b85b96b41af4/irt-dxc.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "kksD11KqWE1t",
"outputId": "17eed0db-3815-4e1e-93ff-d3bdad9fa788"
},
"source": [
"!pip install numpyro"
],
"execution_count": 172,
"outputs": [
{
"output_type": "stream",
"text": [
"Requirement already satisfied: numpyro in /usr/local/lib/python3.7/dist-packages (0.7.2)\n",
"Requirement already satisfied: tqdm in /usr/local/lib/python3.7/dist-packages (from numpyro) (4.62.0)\n",
"Requirement already satisfied: jax>=0.2.13 in /usr/local/lib/python3.7/dist-packages (from numpyro) (0.2.19)\n",
"Requirement already satisfied: jaxlib>=0.1.65 in /usr/local/lib/python3.7/dist-packages (from numpyro) (0.1.70+cuda110)\n",
"Requirement already satisfied: absl-py in /usr/local/lib/python3.7/dist-packages (from jax>=0.2.13->numpyro) (0.12.0)\n",
"Requirement already satisfied: numpy>=1.18 in /usr/local/lib/python3.7/dist-packages (from jax>=0.2.13->numpyro) (1.19.5)\n",
"Requirement already satisfied: opt-einsum in /usr/local/lib/python3.7/dist-packages (from jax>=0.2.13->numpyro) (3.3.0)\n",
"Requirement already satisfied: scipy in /usr/local/lib/python3.7/dist-packages (from jaxlib>=0.1.65->numpyro) (1.4.1)\n",
"Requirement already satisfied: flatbuffers<3.0,>=1.12 in /usr/local/lib/python3.7/dist-packages (from jaxlib>=0.1.65->numpyro) (1.12)\n",
"Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from absl-py->jax>=0.2.13->numpyro) (1.15.0)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "xhWfo56bWGsv"
},
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import numpyro\n",
"import jax\n",
"\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from numpyro import distributions as dist\n",
"from numpyro.infer import NUTS,MCMC\n",
"\n"
],
"execution_count": 173,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ZHe2P1PIaLP3"
},
"source": [
"import jax.numpy as jnp\n",
"def L2P(a, b, x):\n",
" return 1 / (1 + jnp.exp(- a * (x - b)))"
],
"execution_count": 174,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "VRY-FWLexltz"
},
"source": [
"可微分なL2P関数をjaxで定義する。\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "8e_iwKqgjNAB"
},
"source": [
"item_score = pd.read_csv(\"/content/drive/MyDrive/01. DXクライテリアWG/IRT分析/item.csv\")\n",
"item_score = item_score.rename(columns={\"Unnamed: 0\":\"name\"}).set_index(\"name\")\n",
"item_score_dict = item_score.to_dict(orient=\"index\")"
],
"execution_count": 175,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "nNnR4HYUx88u"
},
"source": [
"pyirtで生成したスコアを元に、データを読み込む。各クライテリアの項目反応曲線のパラメータを取得する。\n"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"id": "W3jLtCX3k6hm",
"outputId": "7bd38772-8c7b-4eee-9118-308e09dab089"
},
"source": [
"sample_data = [\n",
" [\"team-1-1\" , 1 ] ,\n",
" [\"team-2-1\" , 1 ] ,\n",
" [\"team-3-1\" , 1 ] ,\n",
" [\"team-4-1\" , 1 ] ,\n",
" [\"team-5-5\" , 1 ] ,\n",
" [\"team-3-1\" , 1 ] ,\n",
" [\"team-2-3\" , 0.5 ] ,\n",
" [\"team-8-2\" , 1] ,\n",
" [\"system-1-1\" , 1 ] ,\n",
" [\"system-2-1\" , 1 ] ,\n",
" [\"system-3-1\" , 0 ] ,\n",
" [\"system-4-1\" , 0.5 ] ,\n",
" [\"system-5-5\" , 1 ] ,\n",
" [\"system-3-1\" , 1 ] ,\n",
" [\"system-2-3\" , 0.5 ] ,\n",
" [\"system-8-2\" , 1] ,\n",
"]\n",
"\n",
"(name,score) = sample_data[1]\n",
"name"
],
"execution_count": 176,
"outputs": [
{
"output_type": "execute_result",
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
},
"text/plain": [
"'team-2-1'"
]
},
"metadata": {},
"execution_count": 176
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "wej_NioVk8FM",
"outputId": "255bb13b-ca04-4a92-89c1-0f142c4e00a2"
},
"source": [
"\n",
"def skill_model(test_data):\n",
" # -4 ~ 4の間に能力値がplotされる。\n",
" skill = numpyro.sample(\"skill\",dist.Uniform(-4,4))\n",
"\n",
" # すべてのサンプリングに対して、回答ansが確率 p= L2P(alpha,beta,skill )のbernoulli(p)分布に従う。\n",
" for idx,value in enumerate(test_data):\n",
" name,answer = value\n",
" item_score = item_score_dict[name]\n",
" a = item_score[\"alpha\"]\n",
" b = item_score[\"beta\"]\n",
" r = numpyro.sample(f\"r_{idx}\",\n",
" dist.Bernoulli( L2P(a,b,skill) ),\n",
" obs=answer )\n",
" return r\n",
"\n",
"\n",
"from numpyro import handlers\n",
"\n",
"with handlers.seed(rng_seed=0): # random.PRNGKey(0) is used\n",
" print(skill_model(sample_data))\n",
" \n",
"## mcmcサンプリング\n",
"kernel = pyro.infer.NUTS(skill_model)\n",
"mcmc = pyro.infer.MCMC(kernel,num_warmup=1000,num_samples=1000)\n",
"\n"
],
"execution_count": 177,
"outputs": [
{
"output_type": "stream",
"text": [
"1\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Mqir06gXooYv",
"outputId": "b2005c9b-2c97-407d-ca48-c052d4ba82b6"
},
"source": [
"mcmc.run(jax.random.PRNGKey(1),sample_data)"
],
"execution_count": 178,
"outputs": [
{
"output_type": "stream",
"text": [
"sample: 100%|██████████| 2000/2000 [00:04<00:00, 423.12it/s, 3 steps of size 5.62e-01. acc. prob=0.87]\n"
],
"name": "stderr"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "BNzGhSz5o0Rz",
"outputId": "f25241a3-e6bf-437c-95f0-7ad1f0d5ffb6"
},
"source": [
"mcmc.print_summary()"
],
"execution_count": 179,
"outputs": [
{
"output_type": "stream",
"text": [
"\n",
" mean std median 5.0% 95.0% n_eff r_hat\n",
" skill 1.76 0.69 1.75 0.63 2.86 238.20 1.00\n",
"\n",
"Number of divergences: 0\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 282
},
"id": "1lBacH1OumDJ",
"outputId": "15b17e6c-d4fb-4daf-a60f-8391ee4c9da4"
},
"source": [
"import seaborn as sns\n",
"sns.histplot(mcmc.get_samples()[\"skill\"],kde=True)"
],
"execution_count": 180,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7fd90b2f1fd0>"
]
},
"metadata": {},
"execution_count": 180
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "cRB-uOAtvv-7"
},
"source": [
"skill_sampling = mcmc.get_samples()[\"skill\"]"
],
"execution_count": 181,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "M9GkFG53zDXK"
},
"source": [
""
],
"execution_count": 181,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment