Suppose I want to predict the response to a specific value of explanatory variables. But I didn't understand why I used type="response" or "terms" or "link".
Asked
Active
Viewed 1.8k times
9
-
3Please see [How to ask a good question](https://stackoverflow.com/help/how-to-ask) and [Minimal, Complete, and Verifiable example](https://stackoverflow.com/help/mcve) and [How to make a great R reproducible example](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). – Rui Barradas Nov 25 '17 at 13:45
-
This link might help,it adresses the same question https://stats.stackexchange.com/questions/448403/how-do-you-interpret-prediction-output-in-gbm-in-r-for-classification-problem – maleckicoa Sep 08 '20 at 12:32
1 Answers
13
Assuming you are talking about GLM, you should first understand how the model is constructed and how it relates to the dependent variable. This is an extensive topic, worthy of full lectures at a university. My suggestion would be to pick up a book and start there.
In short and oversimplified, in order for the math to come out, you need to wrap the y
into some function so that on the right side of the equation you get a "nice", e.g. f(y) = beta_0 + beta_1 * X1 + beta_2 * X2 + e
type formula.
ldose <- rep(0:5, 2)
numdead <- c(1, 4, 9, 13, 18, 20, 0, 2, 6, 10, 12, 16)
sex <- factor(rep(c("M", "F"), c(6, 6)))
SF <- cbind(numdead, numalive = 20-numdead)
budworm.lg <- glm(SF ~ sex*ldose, family = binomial)
Now, when you ask the predict
to return type = link
, you get values of f(y)
.
predict(budworm.lg, type = "link")
1 2 3 4 5 6
-2.8185550 -1.5596055 -0.3006561 0.9582933 2.2172427 3.4761922
7 8 9 10 11 12
-2.9935418 -2.0875053 -1.1814689 -0.2754324 0.6306040 1.5366404
type = response
will resolve this term so that it is on the "natural" scale.
predict(budworm.lg, type = "response")
1 2 3 4 5 6
0.05632970 0.17370326 0.42539710 0.72277997 0.90178726 0.97000272
7 8 9 10 11 12
0.04771849 0.11031718 0.23478819 0.43157393 0.65262640 0.82297581
The type = terms
will return a matrix given fit of each observation on a linear scale.
predict(budworm.lg, type = "terms")
sex ldose sex:ldose
1 0.08749339 -2.2650911 -0.44114124
2 0.08749339 -1.3590547 -0.08822825
3 0.08749339 -0.4530182 0.26468474
4 0.08749339 0.4530182 0.61759773
5 0.08749339 1.3590547 0.97051072
6 0.08749339 2.2650911 1.32342371
7 -0.08749339 -2.2650911 -0.44114124
8 -0.08749339 -1.3590547 -0.44114124
9 -0.08749339 -0.4530182 -0.44114124
10 -0.08749339 0.4530182 -0.44114124
11 -0.08749339 1.3590547 -0.44114124
12 -0.08749339 2.2650911 -0.44114124
attr(,"constant")
[1] -0.199816

Carrotpumpkin
- 3
- 2

Roman Luštrik
- 69,533
- 24
- 154
- 197