Я подобрал логистическую c регрессионную модель, используя функцию glm в R (base) с одним категориальным предиктором, который может принимать пять значений: «A», «B», «C», «D» и «E» .
> library(dummies)
> n <- 5000
> beta0 <- 0.07
> betaB <- 0.1
> betaC <- -0.15
> betaD <- -0.03
> betaE <- 0.9
>
> #data simulation
> set.seed(123)
> x <- sample(x=c("A","B", "C", "D", "E"), size=n, replace=TRUE, prob=rep(1/5, 5)) #(a)
> linpred <- cbind(1, dummy(x)[, -1]) %*% c(beta0, betaB, betaC, betaD, betaE) #(b)
> pi <- exp(linpred) / (1 + exp(linpred)) #(c)
> y <- rbinom(n=n, size=1, prob=pi) #(d)
> data <- data.frame(x=x, y=y)
> #fit the logistic model
> mod <- glm(y ~ x, family="binomial", data=data)
> summary(mod)
Call:
glm(formula = y ~ x, family = "binomial", data = data)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.660 -1.182 0.762 1.104 1.219
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.1742 0.0638 2.73 0.0063 **
xB 0.0402 0.0896 0.45 0.6541
xC -0.2711 0.0906 -2.99 0.0028 **
xD -0.1644 0.0894 -1.84 0.0661 .
xE 0.9125 0.0968 9.42 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 6847.3 on 4999 degrees of freedom
Residual deviance: 6653.6 on 4995 degrees of freedom
AIC: 6664
Number of Fisher Scoring iterations: 4
Предположим, я взял подмножество вышеперечисленных данных (первые 4000 строк) и обновил ту же модель, сохранив два уже оцененных коэффициента, например (D и E) фиксированными равными -0,1644 и 0,9125. Другими словами, максимизация должна выполняться через Intercept, A, B и C, но не через D и E. Таким образом, при выполнении следующих строк сводка (mod2) должна давать -0,1644 и 0,9125.
> mod2 <- glm(y ~ x, family="binomial", data=data[1:4000,])
> summary(mod2)
Call:
glm(formula = y ~ x, family = "binomial", data = data[1:4000,
])
Deviance Residuals:
Min 1Q Median 3Q Max
-1.65 -1.18 0.77 1.11 1.23
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.1644 0.0702 2.34 0.0192 *
xB 0.0687 0.0994 0.69 0.4897
xC -0.2920 0.1008 -2.90 0.0038 **
xD -0.1619 0.0994 -1.63 0.1034
xE 0.9007 0.1076 8.37 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 5483.0 on 3999 degrees of freedom
Residual deviance: 5330.2 on 3995 degrees of freedom
AIC: 5340
Number of Fisher Scoring iterations: 4
Кто-нибудь знает, как я могу настроить для этого функцию glm.fit в R?