Ngươi mâu
Đặt nếu ai đó có loại "B" và x B = 0 nếu không. Xác định x C , x D và x E similary. Nếu x B = x C = x D = x E = 0 , thì chúng ta có loại "A" (nghĩa là "A" là mức tham chiếu). Mô hình của bạn sau đó có thể được viết làxB= 1xB= 0xCxDxExB= = xC= = xD= = xE= 0
với β 0 một đánh chặn.
logit ( π) = β0+βBxB+βCxC+ βDxD+βExE
β0
Tạo dữ liệu trong R
(a)
x <- sample(x=c("A","B", "C", "D", "E"),
size=n, replace=TRUE, prob=rep(1/5, 5))
Các x
vector có n
các thành phần (một cho mỗi cá nhân). Mỗi thành phần là "A", "B", "C", "D" hoặc "E". Mỗi "A", "B", "C", "D" và "E" đều có khả năng như nhau.
(b)
library(dummies)
dummy(x)
dummy(x)
n
xMộtxBxCxDxE
linpred <- cbind(1, dummy(x)[, -1]) %*% c(beta0, betaB, betaC, betaD, betaE)
(c)
Xác suất thành công theo mô hình logistic:
pi <- exp(linpred) / (1 + exp(linpred))
(d)
TôiThùng (n,p)n = 1p = pi[i]
y <- rbinom(n=n, size=1, prob=pi)
Một số mô phỏng nhanh để kiểm tra điều này là OK
> #------ parameters ------
> n <- 1000
> beta0 <- 0.07
> betaB <- 0.1
> betaC <- -0.15
> betaD <- -0.03
> betaE <- 0.9
> #------------------------
>
> #------ initialisation ------
> beta0Hat <- rep(NA, 1000)
> betaBHat <- rep(NA, 1000)
> betaCHat <- rep(NA, 1000)
> betaDHat <- rep(NA, 1000)
> betaEHat <- rep(NA, 1000)
> #----------------------------
>
> #------ simulations ------
> for(i in 1:1000)
+ {
+ #data generation
+ 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)
+
+ #save the estimates
+ beta0Hat[i] <- mod$coef[1]
+ betaBHat[i] <- mod$coef[2]
+ betaCHat[i] <- mod$coef[3]
+ betaDHat[i] <- mod$coef[4]
+ betaEHat[i] <- mod$coef[5]
+ }
> #-------------------------
>
> #------ results ------
> round(c(beta0=mean(beta0Hat),
+ betaB=mean(betaBHat),
+ betaC=mean(betaCHat),
+ betaD=mean(betaDHat),
+ betaE=mean(betaEHat)), 3)
beta0 betaB betaC betaD betaE
0.066 0.100 -0.152 -0.026 0.908
> #---------------------