{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# Modelling proportion data using the binomial distribution\n",
"\n",
"本节需要的包:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"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": [
"## Binary (Bernoulli) data, odds and log-odds\n",
"\n",
"Here we are considering the situation where the response can only take two possible values. These might be coded in the form of:\n",
"\n",
"- Zeros or ones.\n",
"- TRUE or FALSE.\n",
"- Yes or No.\n",
"- Success or Failure.\n",
"- Or any other pair of categorical values.\n",
"\n",
"Bernoulli random variables(伯努利随机变量):\n",
"\n",
"If Y is a Bernoulli random variable with parameter p, then Y will take the value 1 with probability p, and the value 0 with probability 1 - p. Since it is a probability, p must be a value that is between 0 and 1, i.e. $p ∈ [0, 1]$.\n",
"\n",
"很容易表明,伯努利随机变量的平均值为:\n",
"\n",
"$$\n",
"E(Y) = p\n",
"$$\n",
"\n",
"而且,方差为\n",
"\n",
"$$\n",
"Var(Y) = p(1 - p)\n",
"$$\n",
"\n",
"### Odds\n",
"\n",
"为了使 glm 对数几率的解释更加容易,我们需要引入 Odds 这个概念,把定义域从 $[0, 1]$ 扩展到 $[0, \\infty]$。\n",
"\n",
"Odds 是指事件发生的概率与事件不发生的概率的比值,即:\n",
"\n",
"$$\n",
"Odds = \\frac{p}{1 - p}\n",
"$$\n",
"\n",
"反过来说:\n",
"\n",
"$$\n",
"p = \\frac{Odds}{1 + Odds}\n",
"$$\n",
"\n",
"### Log-odds\n",
"\n",
"Odds 的对数(简称为 log-odds)为:\n",
"\n",
"$$\n",
"LogOdds = log(\\frac{p}{1 - p})\n",
"$$\n",
"\n",
"此时定义域从 $[0, \\infty]$ 变为 $[-\\infty, \\infty]$。\n",
"\n",
"$$\n",
"p = \\frac{exp(LogOdds)}{1 + exp(LogOdds)}\n",
"$$"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Modelling log-odds\n",
"\n",
"Why log-odds?\n",
"\n",
"由于我们的模型对或的值没有限制,所以在设置变量为 $β_0$、$β_1$ 的情况下,$β_0 + β_1 x$ 可以在实线上取任何值。\n",
"\n",
"That is, $\\beta_0+\\beta_1x\\in(-\\infty,\\infty)$.\n",
"\n",
"$$\n",
"\\text{Log-Odds}=\\beta_0+\\beta_1x\n",
"$$\n",
"\n",
"Log-Odds can be any real number.\n",
"\n",
"即:\n",
"\n",
"$$\n",
"\\text{log}\\left(\\frac{p}{1-p}\\right)=\\beta_0+\\beta_1x\n",
"$$\n",
"\n",
"其中p是解释变量x的主体 \"成功\" 的概率。\n",
"\n",
"This can be re-arranged in the logistic form\n",
"\n",
"$$\n",
"p=\\frac{exp(\\beta_0+\\beta_1x)}{1+exp(\\beta_0+\\beta_1x)}\n",
"$$"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Modelling the response when it is binary (ungrouped data) via glm"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"A data.frame: 10 × 3\n",
"\n",
"\t | distance | gender | basket |
\n",
"\t | <int> | <chr> | <int> |
\n",
"\n",
"\n",
"\t1 | 3 | M | 1 |
\n",
"\t2 | 1 | F | 1 |
\n",
"\t3 | 2 | M | 1 |
\n",
"\t4 | 3 | M | 0 |
\n",
"\t5 | 1 | M | 1 |
\n",
"\t6 | 2 | F | 1 |
\n",
"\t7 | 2 | F | 1 |
\n",
"\t8 | 1 | F | 1 |
\n",
"\t9 | 3 | F | 0 |
\n",
"\t10 | 1 | F | 1 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 10 × 3\n",
"\\begin{tabular}{r|lll}\n",
" & distance & gender & basket\\\\\n",
" & & & \\\\\n",
"\\hline\n",
"\t1 & 3 & M & 1\\\\\n",
"\t2 & 1 & F & 1\\\\\n",
"\t3 & 2 & M & 1\\\\\n",
"\t4 & 3 & M & 0\\\\\n",
"\t5 & 1 & M & 1\\\\\n",
"\t6 & 2 & F & 1\\\\\n",
"\t7 & 2 & F & 1\\\\\n",
"\t8 & 1 & F & 1\\\\\n",
"\t9 & 3 & F & 0\\\\\n",
"\t10 & 1 & F & 1\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 10 × 3\n",
"\n",
"| | distance <int> | gender <chr> | basket <int> |\n",
"|---|---|---|---|\n",
"| 1 | 3 | M | 1 |\n",
"| 2 | 1 | F | 1 |\n",
"| 3 | 2 | M | 1 |\n",
"| 4 | 3 | M | 0 |\n",
"| 5 | 1 | M | 1 |\n",
"| 6 | 2 | F | 1 |\n",
"| 7 | 2 | F | 1 |\n",
"| 8 | 1 | F | 1 |\n",
"| 9 | 3 | F | 0 |\n",
"| 10 | 1 | F | 1 |\n",
"\n"
],
"text/plain": [
" distance gender basket\n",
"1 3 M 1 \n",
"2 1 F 1 \n",
"3 2 M 1 \n",
"4 3 M 0 \n",
"5 1 M 1 \n",
"6 2 F 1 \n",
"7 2 F 1 \n",
"8 1 F 1 \n",
"9 3 F 0 \n",
"10 1 F 1 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bb.df <- read.csv(\"../data/basketball.csv\")\n",
"head(bb.df, 10)\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/plain": [
" gender\n",
"distance F M\n",
" 1 10 10\n",
" 2 6 5\n",
" 3 2 1"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"success.tbl <- xtabs(basket ~ distance + gender, data = bb.df)\n",
"success.tbl\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [],
"source": [
"bb.fit <- glm(\n",
" basket ~ distance * gender,\n",
" family = binomial, # binomial distribution\n",
" data = bb.df\n",
")\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"Plot with title \"\""
]
},
"metadata": {
"image/png": {
"height": 420,
"width": 420
}
},
"output_type": "display_data"
}
],
"source": [
"plot(bb.fit, which = 1, lty = 2)\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"Call:\n",
"glm(formula = basket ~ distance * gender, family = binomial, \n",
" data = bb.df)\n",
"\n",
"Deviance Residuals: \n",
" Min 1Q Median 3Q Max \n",
"-1.5106 -0.5900 0.2723 0.2866 2.3474 \n",
"\n",
"Coefficients:\n",
" Estimate Std. Error z value Pr(>|z|) \n",
"(Intercept) 5.5878 1.9050 2.933 0.00335 **\n",
"distance -2.4159 0.8181 -2.953 0.00314 **\n",
"genderM 0.6710 2.9235 0.230 0.81847 \n",
"distance:genderM -0.5668 1.3213 -0.429 0.66794 \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: 82.108 on 59 degrees of freedom\n",
"Residual deviance: 46.202 on 56 degrees of freedom\n",
"AIC: 54.202\n",
"\n",
"Number of Fisher Scoring iterations: 5\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"summary(bb.fit)\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"Call:\n",
"glm(formula = basket ~ distance + gender, family = binomial, \n",
" data = bb.df)\n",
"\n",
"Deviance Residuals: \n",
" Min 1Q Median 3Q Max \n",
"-1.5382 -0.5411 0.2461 0.3219 2.2283 \n",
"\n",
"Coefficients:\n",
" Estimate Std. Error z value Pr(>|z|) \n",
"(Intercept) 6.1469 1.5242 4.033 5.51e-05 ***\n",
"distance -2.6648 0.6364 -4.188 2.82e-05 ***\n",
"genderM -0.5478 0.7486 -0.732 0.464 \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: 82.108 on 59 degrees of freedom\n",
"Residual deviance: 46.392 on 57 degrees of freedom\n",
"AIC: 52.392\n",
"\n",
"Number of Fisher Scoring iterations: 5\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bb.fit1 <- glm(basket ~ distance + gender,\n",
" family = binomial, data = bb.df\n",
")\n",
"summary(bb.fit1)\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"Call:\n",
"glm(formula = basket ~ distance, family = binomial, data = bb.df)\n",
"\n",
"Deviance Residuals: \n",
" Min 1Q Median 3Q Max \n",
"-1.4118 -0.4818 0.2873 0.2873 2.1029 \n",
"\n",
"Coefficients:\n",
" Estimate Std. Error z value Pr(>|z|) \n",
"(Intercept) 5.7980 1.4038 4.130 3.63e-05 ***\n",
"distance -2.6310 0.6274 -4.193 2.75e-05 ***\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: 82.108 on 59 degrees of freedom\n",
"Residual deviance: 46.937 on 58 degrees of freedom\n",
"AIC: 50.937\n",
"\n",
"Number of Fisher Scoring iterations: 5\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bb.fit2 <- glm(basket ~ distance, family = binomial, data = bb.df)\n",
"summary(bb.fit2)\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"- (Intercept)
- 5.79796774980359
- distance
- -2.63103340427344
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[(Intercept)] 5.79796774980359\n",
"\\item[distance] -2.63103340427344\n",
"\\end{description*}\n"
],
"text/markdown": [
"(Intercept)\n",
": 5.79796774980359distance\n",
": -2.63103340427344\n",
"\n"
],
"text/plain": [
"(Intercept) distance \n",
" 5.797968 -2.631033 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"coef(bb.fit2)\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"- (Intercept)
- 329.628990177673
- distance
- 0.0720040145217855
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[(Intercept)] 329.628990177673\n",
"\\item[distance] 0.0720040145217855\n",
"\\end{description*}\n"
],
"text/markdown": [
"(Intercept)\n",
": 329.628990177673distance\n",
": 0.0720040145217855\n",
"\n"
],
"text/plain": [
" (Intercept) distance \n",
"329.62899018 0.07200401 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"- (Intercept)
- -32862.8990177673
- distance
- 92.7995985478214
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[(Intercept)] -32862.8990177673\n",
"\\item[distance] 92.7995985478214\n",
"\\end{description*}\n"
],
"text/markdown": [
"(Intercept)\n",
": -32862.8990177673distance\n",
": 92.7995985478214\n",
"\n"
],
"text/plain": [
"(Intercept) distance \n",
"-32862.8990 92.7996 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"exp(coef(bb.fit2))\n",
"100 * (1 - exp(coef(bb.fit2)))\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Waiting for profiling to be done...\n",
"\n"
]
},
{
"data": {
"text/html": [
"\n",
"A matrix: 2 × 2 of type dbl\n",
"\n",
"\t | 2.5 % | 97.5 % |
\n",
"\n",
"\n",
"\t(Intercept) | 3.422396 | 9.037020 |
\n",
"\tdistance | -4.103523 | -1.568945 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A matrix: 2 × 2 of type dbl\n",
"\\begin{tabular}{r|ll}\n",
" & 2.5 \\% & 97.5 \\%\\\\\n",
"\\hline\n",
"\t(Intercept) & 3.422396 & 9.037020\\\\\n",
"\tdistance & -4.103523 & -1.568945\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A matrix: 2 × 2 of type dbl\n",
"\n",
"| | 2.5 % | 97.5 % |\n",
"|---|---|---|\n",
"| (Intercept) | 3.422396 | 9.037020 |\n",
"| distance | -4.103523 | -1.568945 |\n",
"\n"
],
"text/plain": [
" 2.5 % 97.5 % \n",
"(Intercept) 3.422396 9.037020\n",
"distance -4.103523 -1.568945"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"A matrix: 2 × 2 of type dbl\n",
"\n",
"\t | 2.5 % | 97.5 % |
\n",
"\n",
"\n",
"\t(Intercept) | -2964.27509 | -840767.86136 |
\n",
"\tdistance | 98.34856 | 79.17351 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A matrix: 2 × 2 of type dbl\n",
"\\begin{tabular}{r|ll}\n",
" & 2.5 \\% & 97.5 \\%\\\\\n",
"\\hline\n",
"\t(Intercept) & -2964.27509 & -840767.86136\\\\\n",
"\tdistance & 98.34856 & 79.17351\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A matrix: 2 × 2 of type dbl\n",
"\n",
"| | 2.5 % | 97.5 % |\n",
"|---|---|---|\n",
"| (Intercept) | -2964.27509 | -840767.86136 |\n",
"| distance | 98.34856 | 79.17351 |\n",
"\n"
],
"text/plain": [
" 2.5 % 97.5 % \n",
"(Intercept) -2964.27509 -840767.86136\n",
"distance 98.34856 79.17351"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"(bb.ci2 <- confint(bb.fit2))\n",
"100 * (1 - exp(bb.ci2))\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"- 1
- 3.16693434553015
- 2
- 0.535900941256714
- 3
- -2.09513246301672
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[1] 3.16693434553015\n",
"\\item[2] 0.535900941256714\n",
"\\item[3] -2.09513246301672\n",
"\\end{description*}\n"
],
"text/markdown": [
"1\n",
": 3.166934345530152\n",
": 0.5359009412567143\n",
": -2.09513246301672\n",
"\n"
],
"text/plain": [
" 1 2 3 \n",
" 3.1669343 0.5359009 -2.0951325 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"predn.df <- data.frame(distance = 1:3)\n",
"bb.logit.pred <- predict(bb.fit2, newdata = predn.df)\n",
"bb.logit.pred\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"- 1
- 0.959570820970203
- 2
- 0.630858358052516
- 3
- 0.109570820976234
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[1] 0.959570820970203\n",
"\\item[2] 0.630858358052516\n",
"\\item[3] 0.109570820976234\n",
"\\end{description*}\n"
],
"text/markdown": [
"1\n",
": 0.9595708209702032\n",
": 0.6308583580525163\n",
": 0.109570820976234\n",
"\n"
],
"text/plain": [
" 1 2 3 \n",
"0.9595708 0.6308584 0.1095708 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plogis(bb.logit.pred)\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"- 1
- 0.959570820970203
- 2
- 0.630858358052516
- 3
- 0.109570820976234
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[1] 0.959570820970203\n",
"\\item[2] 0.630858358052516\n",
"\\item[3] 0.109570820976234\n",
"\\end{description*}\n"
],
"text/markdown": [
"1\n",
": 0.9595708209702032\n",
": 0.6308583580525163\n",
": 0.109570820976234\n",
"\n"
],
"text/plain": [
" 1 2 3 \n",
"0.9595708 0.6308584 0.1095708 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"predict(bb.fit2, newdata = predn.df, type = \"response\")\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"- 1
- 0.815101808705841
- 2
- 0.381297733450052
- 3
- 0.643231168633718
\n"
],
"text/latex": [
"\\begin{description*}\n",
"\\item[1] 0.815101808705841\n",
"\\item[2] 0.381297733450052\n",
"\\item[3] 0.643231168633718\n",
"\\end{description*}\n"
],
"text/markdown": [
"1\n",
": 0.8151018087058412\n",
": 0.3812977334500523\n",
": 0.643231168633718\n",
"\n"
],
"text/plain": [
" 1 2 3 \n",
"0.8151018 0.3812977 0.6432312 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"A matrix: 3 × 2 of type dbl\n",
"\n",
"\t | lower | upper |
\n",
"\n",
"\n",
"\t1 | 0.82768876 | 0.9915452 |
\n",
"\t2 | 0.44733541 | 0.7830016 |
\n",
"\t3 | 0.03370361 | 0.3027157 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A matrix: 3 × 2 of type dbl\n",
"\\begin{tabular}{r|ll}\n",
" & lower & upper\\\\\n",
"\\hline\n",
"\t1 & 0.82768876 & 0.9915452\\\\\n",
"\t2 & 0.44733541 & 0.7830016\\\\\n",
"\t3 & 0.03370361 & 0.3027157\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A matrix: 3 × 2 of type dbl\n",
"\n",
"| | lower | upper |\n",
"|---|---|---|\n",
"| 1 | 0.82768876 | 0.9915452 |\n",
"| 2 | 0.44733541 | 0.7830016 |\n",
"| 3 | 0.03370361 | 0.3027157 |\n",
"\n"
],
"text/plain": [
" lower upper \n",
"1 0.82768876 0.9915452\n",
"2 0.44733541 0.7830016\n",
"3 0.03370361 0.3027157"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bb.logit.predses <- predict(bb.fit2, newdata = predn.df, se.fit = TRUE)$se.fit\n",
"bb.logit.predses\n",
"# Lower and upper bounds of CIs for the log-odds\n",
"lower = bb.logit.pred - 1.96 * bb.logit.predses\n",
"upper = bb.logit.pred + 1.96 * bb.logit.predses\n",
"ci = cbind(lower, upper)\n",
"plogis(ci)\n"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"***Estimates and CIs are on the link scale***\n",
"\n"
]
},
{
"data": {
"text/html": [
"\n",
"A matrix: 3 × 3 of type dbl\n",
"\n",
"\t | fit | lwr | upr |
\n",
"\n",
"\n",
"\t1 | 3.1669343 | 1.5693642 | 4.7645045 |
\n",
"\t2 | 0.5359009 | -0.2114289 | 1.2832308 |
\n",
"\t3 | -2.0951325 | -3.3558424 | -0.8344225 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A matrix: 3 × 3 of type dbl\n",
"\\begin{tabular}{r|lll}\n",
" & fit & lwr & upr\\\\\n",
"\\hline\n",
"\t1 & 3.1669343 & 1.5693642 & 4.7645045\\\\\n",
"\t2 & 0.5359009 & -0.2114289 & 1.2832308\\\\\n",
"\t3 & -2.0951325 & -3.3558424 & -0.8344225\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A matrix: 3 × 3 of type dbl\n",
"\n",
"| | fit | lwr | upr |\n",
"|---|---|---|---|\n",
"| 1 | 3.1669343 | 1.5693642 | 4.7645045 |\n",
"| 2 | 0.5359009 | -0.2114289 | 1.2832308 |\n",
"| 3 | -2.0951325 | -3.3558424 | -0.8344225 |\n",
"\n"
],
"text/plain": [
" fit lwr upr \n",
"1 3.1669343 1.5693642 4.7645045\n",
"2 0.5359009 -0.2114289 1.2832308\n",
"3 -2.0951325 -3.3558424 -0.8344225"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"***Estimates and CIs are on the response scale***\n",
"\n"
]
},
{
"data": {
"text/html": [
"\n",
"A matrix: 3 × 3 of type dbl\n",
"\n",
"\t | fit | lwr | upr |
\n",
"\n",
"\n",
"\t1 | 0.9595708 | 0.82769294 | 0.9915450 |
\n",
"\t2 | 0.6308584 | 0.44733881 | 0.7829992 |
\n",
"\t3 | 0.1095708 | 0.03370437 | 0.3027108 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A matrix: 3 × 3 of type dbl\n",
"\\begin{tabular}{r|lll}\n",
" & fit & lwr & upr\\\\\n",
"\\hline\n",
"\t1 & 0.9595708 & 0.82769294 & 0.9915450\\\\\n",
"\t2 & 0.6308584 & 0.44733881 & 0.7829992\\\\\n",
"\t3 & 0.1095708 & 0.03370437 & 0.3027108\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A matrix: 3 × 3 of type dbl\n",
"\n",
"| | fit | lwr | upr |\n",
"|---|---|---|---|\n",
"| 1 | 0.9595708 | 0.82769294 | 0.9915450 |\n",
"| 2 | 0.6308584 | 0.44733881 | 0.7829992 |\n",
"| 3 | 0.1095708 | 0.03370437 | 0.3027108 |\n",
"\n"
],
"text/plain": [
" fit lwr upr \n",
"1 0.9595708 0.82769294 0.9915450\n",
"2 0.6308584 0.44733881 0.7829992\n",
"3 0.1095708 0.03370437 0.3027108"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"predictGLM(bb.fit2, newdata = data.frame(distance = 1:3), type = \"link\")\n",
"predictGLM(bb.fit2, newdata = data.frame(distance = 1:3), type = \"response\")\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Modelling the response when it is binomial (grouped binary data) via glm"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[1m\u001b[22m`summarise()` has grouped output by 'gender'. You can override using the\n",
"`.groups` argument.\n"
]
},
{
"data": {
"text/html": [
"\n",
"A data.frame: 6 × 4\n",
"\n",
"\tgender | distance | n | propn |
\n",
"\t<chr> | <int> | <int> | <dbl> |
\n",
"\n",
"\n",
"\tF | 1 | 10 | 1.0 |
\n",
"\tF | 2 | 10 | 0.6 |
\n",
"\tF | 3 | 10 | 0.2 |
\n",
"\tM | 1 | 10 | 1.0 |
\n",
"\tM | 2 | 10 | 0.5 |
\n",
"\tM | 3 | 10 | 0.1 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 6 × 4\n",
"\\begin{tabular}{llll}\n",
" gender & distance & n & propn\\\\\n",
" & & & \\\\\n",
"\\hline\n",
"\t F & 1 & 10 & 1.0\\\\\n",
"\t F & 2 & 10 & 0.6\\\\\n",
"\t F & 3 & 10 & 0.2\\\\\n",
"\t M & 1 & 10 & 1.0\\\\\n",
"\t M & 2 & 10 & 0.5\\\\\n",
"\t M & 3 & 10 & 0.1\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 6 × 4\n",
"\n",
"| gender <chr> | distance <int> | n <int> | propn <dbl> |\n",
"|---|---|---|---|\n",
"| F | 1 | 10 | 1.0 |\n",
"| F | 2 | 10 | 0.6 |\n",
"| F | 3 | 10 | 0.2 |\n",
"| M | 1 | 10 | 1.0 |\n",
"| M | 2 | 10 | 0.5 |\n",
"| M | 3 | 10 | 0.1 |\n",
"\n"
],
"text/plain": [
" gender distance n propn\n",
"1 F 1 10 1.0 \n",
"2 F 2 10 0.6 \n",
"3 F 3 10 0.2 \n",
"4 M 1 10 1.0 \n",
"5 M 2 10 0.5 \n",
"6 M 3 10 0.1 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Load dplyr package to manipulate data frames\n",
"library(dplyr)\n",
"bb.grouped.df = bb.df %>%\n",
" group_by(gender, distance) %>%\n",
" summarize(n = n(), propn = sum(basket) / n)\n",
"# Change tibble back to a data frame\n",
"bb.grouped.df = data.frame(bb.grouped.df)\n",
"bb.grouped.df\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"这样转换后,虽然结果相同,但我们可以做卡方检验了(手动经历了分组)。"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"Call:\n",
"glm(formula = propn ~ distance * gender, family = binomial, data = bb.grouped.df, \n",
" weights = n)\n",
"\n",
"Deviance Residuals: \n",
" 1 2 3 4 5 6 \n",
" 0.9063 -0.5354 0.3367 0.8612 -0.4629 0.4376 \n",
"\n",
"Coefficients:\n",
" Estimate Std. Error z value Pr(>|z|) \n",
"(Intercept) 5.5878 1.9050 2.933 0.00335 **\n",
"distance -2.4159 0.8181 -2.953 0.00314 **\n",
"genderM 0.6710 2.9236 0.230 0.81848 \n",
"distance:genderM -0.5668 1.3214 -0.429 0.66795 \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: 38.2749 on 5 degrees of freedom\n",
"Residual deviance: 2.3688 on 2 degrees of freedom\n",
"AIC: 20.23\n",
"\n",
"Number of Fisher Scoring iterations: 4\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bb.fit3 = glm(propn ~ distance * gender,\n",
" weights = n,\n",
" family = binomial, data = bb.grouped.df\n",
")\n",
"summary(bb.fit3)\n"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"0.305929682251732"
],
"text/latex": [
"0.305929682251732"
],
"text/markdown": [
"0.305929682251732"
],
"text/plain": [
"[1] 0.3059297"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"1 - pchisq(2.3688, 2)\n"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"Plot with title \"\""
]
},
"metadata": {
"image/png": {
"height": 420,
"width": 420
}
},
"output_type": "display_data"
}
],
"source": [
"plot(bb.fit3, which = 1, lty = 2)\n"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"A data.frame: 6 × 6\n",
"\n",
"\tgender | distance | n | propn | success | fail |
\n",
"\t<chr> | <int> | <int> | <dbl> | <dbl> | <dbl> |
\n",
"\n",
"\n",
"\tF | 1 | 10 | 1.0 | 10 | 0 |
\n",
"\tF | 2 | 10 | 0.6 | 6 | 4 |
\n",
"\tF | 3 | 10 | 0.2 | 2 | 8 |
\n",
"\tM | 1 | 10 | 1.0 | 10 | 0 |
\n",
"\tM | 2 | 10 | 0.5 | 5 | 5 |
\n",
"\tM | 3 | 10 | 0.1 | 1 | 9 |
\n",
"\n",
"
\n"
],
"text/latex": [
"A data.frame: 6 × 6\n",
"\\begin{tabular}{llllll}\n",
" gender & distance & n & propn & success & fail\\\\\n",
" & & & & & \\\\\n",
"\\hline\n",
"\t F & 1 & 10 & 1.0 & 10 & 0\\\\\n",
"\t F & 2 & 10 & 0.6 & 6 & 4\\\\\n",
"\t F & 3 & 10 & 0.2 & 2 & 8\\\\\n",
"\t M & 1 & 10 & 1.0 & 10 & 0\\\\\n",
"\t M & 2 & 10 & 0.5 & 5 & 5\\\\\n",
"\t M & 3 & 10 & 0.1 & 1 & 9\\\\\n",
"\\end{tabular}\n"
],
"text/markdown": [
"\n",
"A data.frame: 6 × 6\n",
"\n",
"| gender <chr> | distance <int> | n <int> | propn <dbl> | success <dbl> | fail <dbl> |\n",
"|---|---|---|---|---|---|\n",
"| F | 1 | 10 | 1.0 | 10 | 0 |\n",
"| F | 2 | 10 | 0.6 | 6 | 4 |\n",
"| F | 3 | 10 | 0.2 | 2 | 8 |\n",
"| M | 1 | 10 | 1.0 | 10 | 0 |\n",
"| M | 2 | 10 | 0.5 | 5 | 5 |\n",
"| M | 3 | 10 | 0.1 | 1 | 9 |\n",
"\n"
],
"text/plain": [
" gender distance n propn success fail\n",
"1 F 1 10 1.0 10 0 \n",
"2 F 2 10 0.6 6 4 \n",
"3 F 3 10 0.2 2 8 \n",
"4 M 1 10 1.0 10 0 \n",
"5 M 2 10 0.5 5 5 \n",
"6 M 3 10 0.1 1 9 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"bb.grouped.df <- transform(bb.grouped.df, success = n * propn, fail = n * (1 - propn))\n",
"bb.grouped.df\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [],
"source": [
"bb.fit4 = glm(cbind(success, fail) ~ distance * gender,\n",
" family = binomial,\n",
" data = bb.grouped.df\n",
")\n",
"summary(bb.fit4)\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example 1: Space shuttle Challenger accident\n",
"\n",
"The NASA space shuttle Challenger broke up during launch on the cold morning of 28 January 1986. Most of the crew survived the initial break-up, but are believed to have been killed when the crew capsule hit the ocean at high speed. 1986年1月28日的寒冷早晨,美国宇航局的挑战者号航天飞机在发射过程中解体。大多数机组人员在最初的解体过程中幸存下来,但据信在机组人员舱高速撞向海洋时被杀死。"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"- 66
- 70
- 69
- 68
- 67
- 72
- 73
- 70
- 57
- 63
- 70
- 78
- 67
- 53
- 67
- 75
- 70
- 81
- 76
- 79
- 75
- 76
- 58
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 66\n",
"\\item 70\n",
"\\item 69\n",
"\\item 68\n",
"\\item 67\n",
"\\item 72\n",
"\\item 73\n",
"\\item 70\n",
"\\item 57\n",
"\\item 63\n",
"\\item 70\n",
"\\item 78\n",
"\\item 67\n",
"\\item 53\n",
"\\item 67\n",
"\\item 75\n",
"\\item 70\n",
"\\item 81\n",
"\\item 76\n",
"\\item 79\n",
"\\item 75\n",
"\\item 76\n",
"\\item 58\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 66\n",
"2. 70\n",
"3. 69\n",
"4. 68\n",
"5. 67\n",
"6. 72\n",
"7. 73\n",
"8. 70\n",
"9. 57\n",
"10. 63\n",
"11. 70\n",
"12. 78\n",
"13. 67\n",
"14. 53\n",
"15. 67\n",
"16. 75\n",
"17. 70\n",
"18. 81\n",
"19. 76\n",
"20. 79\n",
"21. 75\n",
"22. 76\n",
"23. 58\n",
"\n",
"\n"
],
"text/plain": [
" [1] 66 70 69 68 67 72 73 70 57 63 70 78 67 53 67 75 70 81 76 79 75 76 58"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"- 0
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 1
- 1
- 1
- 0
- 0
- 2
- 0
- 0
- 0
- 0
- 0
- 0
- 2
- 0
- 1
\n"
],
"text/latex": [
"\\begin{enumerate*}\n",
"\\item 0\n",
"\\item 1\n",
"\\item 0\n",
"\\item 0\n",
"\\item 0\n",
"\\item 0\n",
"\\item 0\n",
"\\item 0\n",
"\\item 1\n",
"\\item 1\n",
"\\item 1\n",
"\\item 0\n",
"\\item 0\n",
"\\item 2\n",
"\\item 0\n",
"\\item 0\n",
"\\item 0\n",
"\\item 0\n",
"\\item 0\n",
"\\item 0\n",
"\\item 2\n",
"\\item 0\n",
"\\item 1\n",
"\\end{enumerate*}\n"
],
"text/markdown": [
"1. 0\n",
"2. 1\n",
"3. 0\n",
"4. 0\n",
"5. 0\n",
"6. 0\n",
"7. 0\n",
"8. 0\n",
"9. 1\n",
"10. 1\n",
"11. 1\n",
"12. 0\n",
"13. 0\n",
"14. 2\n",
"15. 0\n",
"16. 0\n",
"17. 0\n",
"18. 0\n",
"19. 0\n",
"20. 0\n",
"21. 2\n",
"22. 0\n",
"23. 1\n",
"\n",
"\n"
],
"text/plain": [
" [1] 0 1 0 0 0 0 0 0 1 1 1 0 0 2 0 0 0 0 0 0 2 0 1"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Space.df <- read.table(\"../data/ChallengerShuttle.txt\", head = TRUE)\n",
"Space.df$Temp\n",
"Space.df$Failure\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [
{
"data": {
"text/plain": [
"\n",
"Call:\n",
"glm(formula = cbind(Failure, 6 - Failure) ~ Temp, family = binomial, \n",
" data = Space.df)\n",
"\n",
"Deviance Residuals: \n",
" Min 1Q Median 3Q Max \n",
"-0.95227 -0.78299 -0.54117 -0.04379 2.65152 \n",
"\n",
"Coefficients:\n",
" Estimate Std. Error z value Pr(>|z|) \n",
"(Intercept) 5.08498 3.05247 1.666 0.0957 .\n",
"Temp -0.11560 0.04702 -2.458 0.0140 *\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: 24.230 on 22 degrees of freedom\n",
"Residual deviance: 18.086 on 21 degrees of freedom\n",
"AIC: 35.647\n",
"\n",
"Number of Fisher Scoring iterations: 5\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Space.gfit = glm(cbind(Failure, 6 - Failure) ~ Temp,\n",
" family = binomial,\n",
" data = Space.df\n",
")\n",
"summary(Space.gfit)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [],
"source": [
"predictGLM(Space.gfit, newdata = data.frame(Temp = 31), type = \"response\")\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"vscode": {
"languageId": "r"
}
},
"outputs": [],
"source": [
"6 * predictGLM(Space.gfit, newdata = data.frame(Temp = 31), type = \"response\")\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
}