{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# Analysis of contingency tables\n",
"\n",
"本节需要的包:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"tags": [
"hide-output"
],
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"载入需要的程辑包:s20x\n",
"\n",
"Warning message:\n",
"\"程辑包's20x'是用R版本4.2.3 来建造的\"\n"
]
}
],
"source": [
"require(s20x)\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Introduction\n",
"\n",
"分类统计表"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"A data.frame: 8 × 3\n",
"\n",
"\t | Subject | Pass | Attend |
\n",
"\t | <int> | <chr> | <chr> |
\n",
"\n",
"\n",
"\t1 | 1 | pass | attend |
\n",
"\t2 | 2 | pass | attend |
\n",
"\t3 | 3 | pass | attend |
\n",
"\t4 | 4 | pass | attend |
\n",
"\t5 | 5 | pass | attend |
\n",
"\t6 | 6 | fail | not.attend |
\n",
"\t7 | 7 | pass | not.attend |
\n",
"\t8 | 8 | fail | attend |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 8 × 3\n",
"\\begin{tabular}{r|lll}\n",
" & Subject & Pass & Attend\\\\\n",
" & & & \\\\\n",
"\\hline\n",
"\t1 & 1 & pass & attend \\\\\n",
"\t2 & 2 & pass & attend \\\\\n",
"\t3 & 3 & pass & attend \\\\\n",
"\t4 & 4 & pass & attend \\\\\n",
"\t5 & 5 & pass & attend \\\\\n",
"\t6 & 6 & fail & not.attend\\\\\n",
"\t7 & 7 & pass & not.attend\\\\\n",
"\t8 & 8 & fail & attend \\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 8 × 3\n",
"\n",
"| | Subject <int> | Pass <chr> | Attend <chr> |\n",
"|---|---|---|---|\n",
"| 1 | 1 | pass | attend |\n",
"| 2 | 2 | pass | attend |\n",
"| 3 | 3 | pass | attend |\n",
"| 4 | 4 | pass | attend |\n",
"| 5 | 5 | pass | attend |\n",
"| 6 | 6 | fail | not.attend |\n",
"| 7 | 7 | pass | not.attend |\n",
"| 8 | 8 | fail | attend |\n",
"\n"
],
"text/plain": [
" Subject Pass Attend \n",
"1 1 pass attend \n",
"2 2 pass attend \n",
"3 3 pass attend \n",
"4 4 pass attend \n",
"5 5 pass attend \n",
"6 6 fail not.attend\n",
"7 7 pass not.attend\n",
"8 8 fail attend "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"AP.df <- read.table(\"../data/AttendPass.txt\", header = T)\n",
"head(AP.df, 8)\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/plain": [
" Pass\n",
"Attend fail pass\n",
" attend 17 83\n",
" not.attend 27 19"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"AP.tbl <- with(AP.df, table(Attend, Pass))\n",
"AP.tbl\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAAM1BMVEUAAABNTU1oaGh8fHyMjIyampqnp6eysrK9vb2+vr7Hx8fQ0NDZ2dnh4eHp6enw8PD////ojgWfAAAACXBIWXMAABJ0AAASdAHeZh94AAAdu0lEQVR4nO3djXJUh5qr4WUgwAl/ff9Xe7AdoEkQswtL9pL6farGsJm07FqfNHYc78lxAfBkx0t/AMAChgQYMCTAgCEBBgwJMGBIgAFDAgwYEmDAkAADhgQYMCTAgCEBBgwJMGBIgAFDAgwYEmDAkAADhgQYMCTAgCEBBgwJMGBIgAFDAgwYEmDAkAADhgQYMCTAgCEBBgwJMGBIgAFDAgwYEmDAkAADhgQYMCTAgCEBBgwJMGBIgAFDAgwYEmDAkAADhgQYMCTAgCEBBgwJMGBIgAFDAgwYEmDAkAADhgQYMCTAgCEBBgwJMGBIgAFDAgwYEmDAkAADhgQYMCTAgCEBBgwJMGBIgAFDAgwYEmDAkAADhgQYMCTAgCEBBgwJMGBIgAFDAgwYEmDAkAADhgQYMCTAgCEBBgwJMGBIgAFDAgwYEmDAkAADhgQYMCTAgCEBBgwJMGBIgAFDAgwYEmDAkAADhgQYMCTAgCEBBgwJMGBIgAFDAgwYEmDAkAADhgQYMCTAgCEBBgwJMGBIL4QH/6fO+eTO+VHNOC7qEfPg/+X4739senLn/KhmtNXhBTEk/MpxHI9vHn7z7e3l4Zf7tzz4q6dxfHtAP/3Hqid3zo+q3z//B/W4/PQ/x/HtTw8e/NXT+PbL5VL75M75UW34RR1+/tMb99+HcvW/aXty5/yoBhzHcV2Hn/7jeevwrMSQOp/cOT+qfr/4AuW/f3rjfj2k0id3zo+q348v66u+QHlWckiNT+6cH9WAx28vHd/+7vjb955+fL3ysh/eGVw9jcuP9ZQ+uXN+VEAZhgQYMCTAgCEBBgwJMGBIgAFDAgwYEmDAkAADhgQYMCTAgCEBBgwJMGBIgAFDAgwYEmDAkACD0w/pwKksnCbS00So0/H/cCLHwGkYEl4cQ1I9TYQ6tV5rFENSPU2EOrVeaxRDUj1NhDq1XmsUQ1I9TYQ6tV5rFENSPU2EOrVeaxRDUj1NhDq1XmsUQ1I9TYQ6tV5rFENSPU2EOrVeaxRDUj1NhDq1XmsUQ1I9TYQ6tV5rFENSPU2EOrVeaxRDUj1NhDq1XmsUQ1I9TYQ6tV5rFENSPU2EOrVeaxRDUj1NhDq1XmsUQ1I9TYQ6tV5rFENSPU2EOrVeaxRDUj1NhDq1XmsUQ1I9TYQ6tV5rFENSPU2EOrVeaxRDUj1NhDq1XmsUQ1I9TYQ6tV5rFENSPU2EOrVeaxRDUj1NhDq1XmsUQ1I9TYQ6tV5rFENSPU2EOrVeaxRDUj1NhDq1XmsUQ1I9TYQ6tV5rFENSPU2EOrVeaxRDUj1NhDq1XmsUQ1I9TYQ6tV5rFENSPU2EOrVeaxRDUj1NhDq1XmsUQ1I9TYQ6tV5rFENSPU2EOrVeaxRDUj1NhDq1XmsUQ1I9TYQ6tV5rFENSPU2EOrVeaxRDUj1NhDq1XmsUQ1I9TYQ6tV5rFENSPU2EOrVeaxRDUj1NhDq1XmsUQ1I9TYT+5t19e3/H//quW681iiGpniZC/7f3xpAKMSTV00To//beGFIhhqR6mgiV7+z+K7uHN3xpV4ohqZ4mQn/33n6siCEVYki62s/o+P4LQ+rEkFRPE6G/fW/H4xd4DKkSQ/pNtZ8PX9q1Y0i62s/onwUxpFoMSVf7GT1+acdnpF4M6TfVPrXWa41iSKqniVCn1muNYkiqp4lQp9ZrjWJIqqeJUKfWa41iSKqniVCn1muNYkiqp4lQp9ZrjWJIqqeJUKfWa41iSKqniVCn1muNYkiqp4lQp9ZrjWJIqqeJUKfWa41iSKqniVCn1muNYkiqp4lQp9ZrjWJIqqeJUKfWa41iSKqniVCn1muNYkiqp4lQp9ZrjWJIqqeJUKfWa41iSKqniVCn1muNYkiqp4lQp9ZrjWJIqqeJUKfWa41iSKqniVCn1muNYkiqp4lQp9ZrjWJIqqeJUKfWa41iSKqniVCn1muNYkiqp4lQp9ZrjWJIqqeJUKfWa41iSKqniVCn1muNYkiqp4lQp9ZrjWJIqqeJUKfWa41iSKqniVCn1muNYkiqp4lQp9ZrjWJIqqeJUKfWa41iSKqniVCn1muNYkiqp4lQp9ZrjWJIqqeJUKfWa41iSKqniVCn1muNYkiqp4lQp9ZrjWJIqqeJUKfWa41iSKqniVCn1muNYkiqp4lQp9ZrjWJIqqeJUKfWa41iSKqniVCn1muNYkiqp4lQp9ZrjWJIqqeJUKcDp3J9mpdexB+6zSHhtBjS9cNIhOImMKTrh5EIxU1gSNcPIxGKm8CQrh9GIhQ3gSFdP4xEKG4CQ7p+GIlQ3ASGdP0wEqG4CQzp+mEkQnETGNL1w0iE4iYwpOuHkQjFTWBI1w8jEer00j9bhp9dn+alF/GHbnRIL/3YcY0hqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpniZCnVqvNYohqZ4mQp1arzWKIameJkKdWq81iiGpnj7lxe9fXS6fXx2vPro+ml9ovdYohqR6+oTXfji+vvru+Cq4pNZrjWJIqqdPeO3r4+/Lp+PV5e/jte3j+Y/Wa41iSKqnT3nt1xd/Ot4+/ial9VqjGJLq6VNe+/XFb44PDOmGMCTV0ye89vXx6cNxd+FLuxvCkFRPn/DaD/ffZ3h3/wnpg+3j+Y/Wa41iSKqnT3nx+7v7v0O6vPrb9MH8Suu1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV06e8mJ9suDkMSfX0Ca/lJxtuD0NSPX3Ca/nJhtvDkFRPn/JafrLh5jAk1dOnvJafbLg5DEn19Amv5Scbbg9DUj19wmv5yYbbw5BUT5/yYn6y4eYwJNXTRKhT67VGMSTV00SoU+u1RjEk1VNHyMc3jpRfa73WKIakevqUF789vnF9OP/Veq1RDEn19Amv/bEjvmt3KxiS6ukTXnt3/H15fXz+/JqftbsZDEn19Cmv/frid18/G33iH8jeDIakevqU1x73/1D2PT8idEMYkurpE1775uuXdp+PV5ePDOlmMCTV0ye89uG/j/T6/psNf9k+nv9ovdYohqR6+pQXv7t/9V/Hw88JpbReaxRDUj1NhDq1XmsUQ1I9TYQ6tV5rFENSPf3TF35+e3fcvf3i/Fh+qfVaoxiS6ukfvu7zw//Tk+Pus/Wj+YXWa41iSKqnf/i6v47XXy5fXie/X/eo9VqjGJLq6R++7u64/6ru8/1/0zyr9VqjGJLq6Z++7rj+Jaj1WqMYkurpn76OId0khqR6+qevY0g3iSGpnv7p6xjSTWJIqqd/+rqfWT+mn9/RSz92XGNIqqd/+jqGdJMYkuppItSp9VqjGJLqaSLUqfVaoxiS6mki1Kn1WqMYkuppItSp9VqjGJLqaSLUqfVaoxiS6mki1Kn1WqMYkuppItSp9VqjGJLqaSLUqfVaoxiS6mki1Kn1WqMYkuppItSp9VqjGJLqaSLUqfVaoxiS6mki1Kn1WqMYkuppItSp9VqjGJLqaSLUqfVaoxiS6mki1Kn1WqMYkuppItSp9VqjGJLqaSLUqfVaoxiS6mki1Kn1WqMYkuppItSp9VqjGJLqaSLUqfVaoxiS6mki1Kn1WqMYkuppItSp9VqjGJLqaSLUqfVaoxiS6mki1Kn1WqMYkuppItSp9VqjGJLqaSLUqfVaoxiS6mki1Kn1WqMYkuppItSp9VqjGJLqaSLUqfVaoxiS6mki1Kn1WqMYkuppItSp9VqjGJLqaSLUqfVaoxiS6mki1Kn1WqMYkuppItSp9VqjGJLqaSLUqfVaoxiS6mki1Kn1WqMYkuppItSp9VqjGJLqaSLUqfVaoxiS6mki1Kn1WqMYkuppItSp9VqjfhpSq0hPE6FODOlUTt+Xl3L6B8OQTuX0fXkpp38wDOlUTt+Xl3L6B8OQTuX0fXkpp38wDOlUTt+Xl3L6B8OQTuX0fXkpz/tgjsvj9x6PX/0iXvLS1cE1hiQ885COh/d4XH7xi3rJS1cH1xiS8Nyfkb6/x+P6d797yUtXB9cYkvAyQ/rnHy/zpV0dhiS8yJB+/sT0+w+DIZ0KQxJe6u+RDv4eqRI/a6d6mgj9zXv79sXchS/tKvHT37Laz+kP3lvrtUYxJNXTRKjzvbVeaxRDUj1NhDrfW+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKhT67VGMSTV00SoU+u1RjEk1dNEqFPrtUYxJNXTRKjTgVNZOE2kp4lQ4NYwJMCAIQEGDAkwYEiAAUMCDBgSYMCQAAOGBBgwJMCAIQEGDAkwYEiAAUMCDBgSYMCQAAOGBBgwJMCAIQEGDAkwYEiAAUMCDBgSYMCQAAOGBBgwJMCAIQEGDAkwYEiAAUMCDBjS+d0dd//87sPV29/I/ItL8Ds88tP7cBzH43ZeHT/e/g5Den488tP763h7/PXwu8eB/N8zYUjPj0d+el+/sLt7PBNDOi8e+dn9fby9vD3+vvzzr5q8fP+XN75/ddy9vzz8+ec3x927h7/67d3Xv5whPT8e+dm9Pj5ePh6vL/8e0puH3zz++d39b989/MVfvWFIz49HfnJfHr5ld3d8ufz8pd2H4/WXy5fX99+GOO5/+/54df/Z6+7T5dMdQ3p+PPKTu//K7vL9a7vL97dvHqb15Xhz/wcf//njNw+/+8CQnh+P/ORePWzj0/3nm5+GdPXvuv/xx8f1NyXwnHjk5/b5+2A+M6Qz45Gf27vvg3n37yF9/2sY0gnwyM/t1f1nosv9Z6ZX//57pO8/KfTjjx//8CNDen488lP7dP/NhAevj0+Xh6/v/nn78A26y/vHbzZcLo9vP/Bdu5fCIz+1t98/73w43n799HT/vfDHt4//yOi4+/lvnR7+4dJfDOn58chP7e7u+rcfX91P6PHtw082HH89foq6fH/7jp9seBk8csCAIQEGDAkwYEiAAUMCDBgSYMCQAAOGBBgwJMCAIQEGDAkwYEiAAUMCDBgSYMCQAAOGBBgwJMCAIQEGDAkwYEiAAUMCDBgSYMCQAAOGBBgwJMCAIQEGDAkwYEiAAUMCDBgSYMCQAAOGBBgwJMCAIQEGDAkwYEiAAUMCDBgSYMCQAAOGBBgwJMCAIQEGDAkwYEiAAUMCDBgSYMCQAAOGBBgwJMCAIQEGDAkwYEiAAUMCDBgSYMCQAAOGBBgwJMCAIQEGDAkwYEiAAUMCDBgSYMCQAAOGBBgwJMCAIQEGDAkwYEiAAUMCDBgSYMCQAAOGBBgwJMCAIQEGDAkwYEiAAUMCDBgSYMCQAIP/D661c5z4jQfAAAAAAElFTkSuQmCC",
"text/plain": [
"Plot with title \"\""
]
},
"metadata": {
"image/png": {
"height": 420,
"width": 420
}
},
"output_type": "display_data"
}
],
"source": [
"plot(AP.tbl, main = \"\", las = 1)\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"image/png": "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Ic0SUhU3XEfaXq4jrTYPriOFEVIV7mxITUhVBK3UdO23v/Sv/zXNT0hVLF6p4/Z8qu7hbprWTwuHENIsIVWxdKUOq5dnmuPKLUKxhFTF0pW6nzbHlx/3h5em7p3+jiKkKpbf2XB8+/HyKs8F2ShCquKmW4RW09U//P0QQpolpCqWv7Tbn04Pr/cJHf/8JklIywmpiqUrtZ9W2/1ps3opaXc37RYNIaRZQqpi8UrtVh8Xih6WDSGkWUKq4oaVerq//C3ZzcNh4RBCmiWkKtwilJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElJqQqhBSakKqQkipCakKIaUmpCqElNoNyzMxZ/nk/mK6R/5hfzmEkGbdEtK/Pvb0hNSHkAIJqQ8hBRJSH0IKJKQ+hBRISH0IKZCQ+hBSICH1IaRAQupDSIGE1IeQAgmpDyEFElIfQgokpD6EFEhIfQgpkJD6EFIgIfUhpEBC6kNIgYTUh5ACCakPIQUSUh9CCiSkPoQUSEh9CCmQkPoQUiAh9SGkQELqQ0iBhNSHkAIlCen5YXP53NfN9nnhEJZ6lpACpQjpeHf1GcrrZUNY6llCCpQipO20etpftg671bRdNISlniWkQClCWk379+39tFo0hKWeJaRAKUL66Tsx/vwFGUJaTkiBUoTkGelLCClQipBe3iPtDpct75ECCSlQipBO66uzdnfHRUNY6llCCpQjpNPz9nIdabV5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",
"text/plain": [
"plot without title"
]
},
"metadata": {
"image/png": {
"height": 420,
"width": 420
}
},
"output_type": "display_data"
}
],
"source": [
"barplot(t(AP.tbl), legend = T)\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## The binomial approach to contingency table analysis"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A data.frame: 2 × 3\n",
"\n",
"\tAttend | Fail | Pass |
\n",
"\t<fct> | <dbl> | <dbl> |
\n",
"\n",
"\n",
"\tnot.attend | 27 | 19 |
\n",
"\tattend | 17 | 83 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 2 × 3\n",
"\\begin{tabular}{lll}\n",
" Attend & Fail & Pass\\\\\n",
" & & \\\\\n",
"\\hline\n",
"\t not.attend & 27 & 19\\\\\n",
"\t attend & 17 & 83\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 2 × 3\n",
"\n",
"| Attend <fct> | Fail <dbl> | Pass <dbl> |\n",
"|---|---|---|\n",
"| not.attend | 27 | 19 |\n",
"| attend | 17 | 83 |\n",
"\n"
],
"text/plain": [
" Attend Fail Pass\n",
"1 not.attend 27 19 \n",
"2 attend 17 83 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Freqs.df <- data.frame(\n",
" Attend = c(\"not.attend\", \"attend\"),\n",
" Fail = c(27, 17), Pass = c(19, 83)\n",
")\n",
"Freqs.df <- transform(Freqs.df, Attend = factor(Attend))\n",
"Freqs.df\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"Call:\n",
"glm(formula = cbind(Pass, Fail) ~ Attend, family = binomial, \n",
" data = Freqs.df)\n",
"\n",
"Deviance Residuals: \n",
"[1] 0 0\n",
"\n",
"Coefficients:\n",
" Estimate Std. Error z value Pr(>|z|) \n",
"(Intercept) 1.5856 0.2662 5.956 2.58e-09 ***\n",
"Attendnot.attend -1.9370 0.4007 -4.834 1.34e-06 ***\n",
"---\n",
"Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n",
"\n",
"(Dispersion parameter for binomial family taken to be 1)\n",
"\n",
" Null deviance: 2.5162e+01 on 1 degrees of freedom\n",
"Residual deviance: -4.2188e-15 on 0 degrees of freedom\n",
"AIC: 12.756\n",
"\n",
"Number of Fisher Scoring iterations: 3\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"AP.binom <- glm(cbind(Pass, Fail) ~ Attend, data = Freqs.df, family = binomial)\n",
"summary(AP.binom)\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Waiting for profiling to be done...\n",
"\n"
]
},
{
"data": {
"text/html": [
"- 2.5 %
- 0.0642983964738622
- 97.5 %
- 0.311134072466483
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[2.5 \\textbackslash{}\\%] 0.0642983964738622\n",
"\\item[97.5 \\textbackslash{}\\%] 0.311134072466483\n",
"\\end{description*}\n"
],
"text/markdown": [
"2.5 %\n",
": 0.064298396473862297.5 %\n",
": 0.311134072466483\n",
"\n"
],
"text/plain": [
" 2.5 % 97.5 % \n",
"0.0642984 0.3111341 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"exp(confint(AP.binom))[2, ]\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## The Poisson approach to contingency table analysis"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Warning message:\n",
"\"程辑包'dplyr'是用R版本4.2.3 来建造的\"\n",
"\n",
"载入程辑包:'dplyr'\n",
"\n",
"\n",
"The following objects are masked from 'package:stats':\n",
"\n",
" filter, lag\n",
"\n",
"\n",
"The following objects are masked from 'package:base':\n",
"\n",
" intersect, setdiff, setequal, union\n",
"\n",
"\n",
"\u001b[1m\u001b[22m`summarise()` has grouped output by 'Attend'. You can override using the\n",
"`.groups` argument.\n"
]
},
{
"data": {
"text/html": [
"\n",
"A data.frame: 4 × 3\n",
"\n",
"\tAttend | Pass | freq |
\n",
"\t<fct> | <fct> | <int> |
\n",
"\n",
"\n",
"\tattend | fail | 17 |
\n",
"\tattend | pass | 83 |
\n",
"\tnot.attend | fail | 27 |
\n",
"\tnot.attend | pass | 19 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 4 × 3\n",
"\\begin{tabular}{lll}\n",
" Attend & Pass & freq\\\\\n",
" & & \\\\\n",
"\\hline\n",
"\t attend & fail & 17\\\\\n",
"\t attend & pass & 83\\\\\n",
"\t not.attend & fail & 27\\\\\n",
"\t not.attend & pass & 19\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 4 × 3\n",
"\n",
"| Attend <fct> | Pass <fct> | freq <int> |\n",
"|---|---|---|\n",
"| attend | fail | 17 |\n",
"| attend | pass | 83 |\n",
"| not.attend | fail | 27 |\n",
"| not.attend | pass | 19 |\n",
"\n"
],
"text/plain": [
" Attend Pass freq\n",
"1 attend fail 17 \n",
"2 attend pass 83 \n",
"3 not.attend fail 27 \n",
"4 not.attend pass 19 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"library(dplyr)\n",
"AP.df <- read.table(\"../data/AttendPass.txt\", header = T)\n",
"AP.df <- transform(AP.df, Pass = factor(Pass), Attend = factor(Attend))\n",
"Freqs2.df <- AP.df %>%\n",
" group_by(Attend, Pass) %>%\n",
" summarize(freq = n()) %>%\n",
" data.frame()\n",
"Freqs2.df\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A matrix: 4 × 4 of type dbl\n",
"\n",
"\t | Estimate | Std. Error | z value | Pr(>|z|) |
\n",
"\n",
"\n",
"\t(Intercept) | 3.2958369 | 0.1924501 | 17.125671 | 9.550242e-66 |
\n",
"\tAttendattend | -0.4626235 | 0.3096136 | -1.494197 | 1.351243e-01 |
\n",
"\tPasspass | -0.3513979 | 0.2994472 | -1.173489 | 2.405999e-01 |
\n",
"\tAttendattend:Passpass | 1.9370252 | 0.4006749 | 4.834407 | 1.335434e-06 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A matrix: 4 × 4 of type dbl\n",
"\\begin{tabular}{r|llll}\n",
" & Estimate & Std. Error & z value & Pr(>\\textbar{}z\\textbar{})\\\\\n",
"\\hline\n",
"\t(Intercept) & 3.2958369 & 0.1924501 & 17.125671 & 9.550242e-66\\\\\n",
"\tAttendattend & -0.4626235 & 0.3096136 & -1.494197 & 1.351243e-01\\\\\n",
"\tPasspass & -0.3513979 & 0.2994472 & -1.173489 & 2.405999e-01\\\\\n",
"\tAttendattend:Passpass & 1.9370252 & 0.4006749 & 4.834407 & 1.335434e-06\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A matrix: 4 × 4 of type dbl\n",
"\n",
"| | Estimate | Std. Error | z value | Pr(>|z|) |\n",
"|---|---|---|---|---|\n",
"| (Intercept) | 3.2958369 | 0.1924501 | 17.125671 | 9.550242e-66 |\n",
"| Attendattend | -0.4626235 | 0.3096136 | -1.494197 | 1.351243e-01 |\n",
"| Passpass | -0.3513979 | 0.2994472 | -1.173489 | 2.405999e-01 |\n",
"| Attendattend:Passpass | 1.9370252 | 0.4006749 | 4.834407 | 1.335434e-06 |\n",
"\n"
],
"text/plain": [
" Estimate Std. Error z value Pr(>|z|) \n",
"(Intercept) 3.2958369 0.1924501 17.125671 9.550242e-66\n",
"Attendattend -0.4626235 0.3096136 -1.494197 1.351243e-01\n",
"Passpass -0.3513979 0.2994472 -1.173489 2.405999e-01\n",
"Attendattend:Passpass 1.9370252 0.4006749 4.834407 1.335434e-06"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Attendattend:Passpass: 6.93808049535602"
],
"text/latex": [
"\\textbf{Attendattend:Passpass:} 6.93808049535602"
],
"text/markdown": [
"**Attendattend:Passpass:** 6.93808049535602"
],
"text/plain": [
"Attendattend:Passpass \n",
" 6.93808 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Freqs2.df$Attend <- relevel(Freqs2.df$Attend, ref = \"not.attend\")\n",
"AP.pois <- glm(freq ~ Attend * Pass, family = poisson, data = Freqs2.df)\n",
"summary(AP.pois)\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Null deviance 叫做零模型自由度,Residual deviance 叫做残差自由度。\n",
"\n",
"残差自由度等于零时,参数个数等于该数据的行数。由此可以推出原数据有 4 行。"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Waiting for profiling to be done...\n",
"\n"
]
},
{
"data": {
"text/html": [
"- 2.5 %
- 3.21404850350281
- 97.5 %
- 15.552487384471
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[2.5 \\textbackslash{}\\%] 3.21404850350281\n",
"\\item[97.5 \\textbackslash{}\\%] 15.552487384471\n",
"\\end{description*}\n"
],
"text/markdown": [
"2.5 %\n",
": 3.2140485035028197.5 %\n",
": 15.552487384471\n",
"\n"
],
"text/plain": [
" 2.5 % 97.5 % \n",
" 3.214049 15.552487 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"exp(confint(AP.pois))[4, ]\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Equivalence of the binomial and Poisson approaches"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A data.frame: 2 × 3\n",
"\n",
"\tAttend | Fail | Pass |
\n",
"\t<fct> | <dbl> | <dbl> |
\n",
"\n",
"\n",
"\tnot.attend | 27 | 19 |
\n",
"\tattend | 17 | 83 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 2 × 3\n",
"\\begin{tabular}{lll}\n",
" Attend & Fail & Pass\\\\\n",
" & & \\\\\n",
"\\hline\n",
"\t not.attend & 27 & 19\\\\\n",
"\t attend & 17 & 83\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 2 × 3\n",
"\n",
"| Attend <fct> | Fail <dbl> | Pass <dbl> |\n",
"|---|---|---|\n",
"| not.attend | 27 | 19 |\n",
"| attend | 17 | 83 |\n",
"\n"
],
"text/plain": [
" Attend Fail Pass\n",
"1 not.attend 27 19 \n",
"2 attend 17 83 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Waiting for profiling to be done...\n",
"\n"
]
},
{
"data": {
"text/html": [
"- 2.5 %
- 3.21404850350281
- 97.5 %
- 15.552487384471
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[2.5 \\textbackslash{}\\%] 3.21404850350281\n",
"\\item[97.5 \\textbackslash{}\\%] 15.552487384471\n",
"\\end{description*}\n"
],
"text/markdown": [
"2.5 %\n",
": 3.2140485035028197.5 %\n",
": 15.552487384471\n",
"\n"
],
"text/plain": [
" 2.5 % 97.5 % \n",
" 3.214049 15.552487 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Freqs.df\n",
"exp(confint(AP.pois))[4, ]\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"- 1
- 17.0000000000001
- 2
- 83.0000000000001
- 3
- 27
- 4
- 19
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[1] 17.0000000000001\n",
"\\item[2] 83.0000000000001\n",
"\\item[3] 27\n",
"\\item[4] 19\n",
"\\end{description*}\n"
],
"text/markdown": [
"1\n",
": 17.00000000000012\n",
": 83.00000000000013\n",
": 274\n",
": 19\n",
"\n"
],
"text/plain": [
" 1 2 3 4 \n",
"17 83 27 19 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"predict(AP.pois, type = \"response\")\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A data.frame: 2 × 3\n",
"\n",
"\tAttend | Fail | Pass |
\n",
"\t<fct> | <dbl> | <dbl> |
\n",
"\n",
"\n",
"\tnot.attend | 27 | 19 |
\n",
"\tattend | 17 | 83 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 2 × 3\n",
"\\begin{tabular}{lll}\n",
" Attend & Fail & Pass\\\\\n",
" & & \\\\\n",
"\\hline\n",
"\t not.attend & 27 & 19\\\\\n",
"\t attend & 17 & 83\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 2 × 3\n",
"\n",
"| Attend <fct> | Fail <dbl> | Pass <dbl> |\n",
"|---|---|---|\n",
"| not.attend | 27 | 19 |\n",
"| attend | 17 | 83 |\n",
"\n"
],
"text/plain": [
" Attend Fail Pass\n",
"1 not.attend 27 19 \n",
"2 attend 17 83 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"A matrix: 4 × 4 of type dbl\n",
"\n",
"\t | Estimate | Std. Error | z value | Pr(>|z|) |
\n",
"\n",
"\n",
"\t(Intercept) | 3.2958369 | 0.1924501 | 17.125671 | 9.550242e-66 |
\n",
"\tAttendattend | -0.4626235 | 0.3096136 | -1.494197 | 1.351243e-01 |
\n",
"\tPasspass | -0.3513979 | 0.2994472 | -1.173489 | 2.405999e-01 |
\n",
"\tAttendattend:Passpass | 1.9370252 | 0.4006749 | 4.834407 | 1.335434e-06 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A matrix: 4 × 4 of type dbl\n",
"\\begin{tabular}{r|llll}\n",
" & Estimate & Std. Error & z value & Pr(>\\textbar{}z\\textbar{})\\\\\n",
"\\hline\n",
"\t(Intercept) & 3.2958369 & 0.1924501 & 17.125671 & 9.550242e-66\\\\\n",
"\tAttendattend & -0.4626235 & 0.3096136 & -1.494197 & 1.351243e-01\\\\\n",
"\tPasspass & -0.3513979 & 0.2994472 & -1.173489 & 2.405999e-01\\\\\n",
"\tAttendattend:Passpass & 1.9370252 & 0.4006749 & 4.834407 & 1.335434e-06\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A matrix: 4 × 4 of type dbl\n",
"\n",
"| | Estimate | Std. Error | z value | Pr(>|z|) |\n",
"|---|---|---|---|---|\n",
"| (Intercept) | 3.2958369 | 0.1924501 | 17.125671 | 9.550242e-66 |\n",
"| Attendattend | -0.4626235 | 0.3096136 | -1.494197 | 1.351243e-01 |\n",
"| Passpass | -0.3513979 | 0.2994472 | -1.173489 | 2.405999e-01 |\n",
"| Attendattend:Passpass | 1.9370252 | 0.4006749 | 4.834407 | 1.335434e-06 |\n",
"\n"
],
"text/plain": [
" Estimate Std. Error z value Pr(>|z|) \n",
"(Intercept) 3.2958369 0.1924501 17.125671 9.550242e-66\n",
"Attendattend -0.4626235 0.3096136 -1.494197 1.351243e-01\n",
"Passpass -0.3513979 0.2994472 -1.173489 2.405999e-01\n",
"Attendattend:Passpass 1.9370252 0.4006749 4.834407 1.335434e-06"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"Attendattend:Passpass: 6.93808049535602"
],
"text/latex": [
"\\textbf{Attendattend:Passpass:} 6.93808049535602"
],
"text/markdown": [
"**Attendattend:Passpass:** 6.93808049535602"
],
"text/plain": [
"Attendattend:Passpass \n",
" 6.93808 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Freqs.df\n",
"coef(summary(AP.pois))\n",
"exp(coef(AP.pois))[4]\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [],
"source": [
"options(digits = 4)\n",
"OR <- 27 * 83 / (17 * 19)\n",
"OR\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "R",
"language": "R",
"name": "ir"
},
"language_info": {
"codemirror_mode": "r",
"file_extension": ".r",
"mimetype": "text/x-r-source",
"name": "R",
"pygments_lexer": "r",
"version": "4.2.2"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}