suppressMessages(library(monobin))
data(gcd)
age.bin <- ndr.bin(x = gcd$age, y = gcd$qual)
age.bin[[1]]
table(age.bin[[2]])
#linear regression example
amount.bin <- ndr.bin(x = gcd$amount, y = gcd$qual, y.type = "cont", p.val = 0.05)
#create nested dummies
db.reg <- gcd[, c("qual", "amount")]
db.reg$amount.bin <- amount.bin[[2]]
amt.s <- db.reg %>%
group_by(amount.bin) %>%
summarise(qual.mean = mean(qual),
amt.min = min(amount))
mins <- amt.s$amt.min
for (i in 2:length(mins)) {
level.l <- mins[i]
nd <- ifelse(db.reg$amount < level.l, 0, 1)
db.reg <- cbind.data.frame(db.reg, nd)
names(db.reg)[ncol(db.reg)] <- paste0("dv_", i)
}
reg.f <- paste0("qual ~ dv_2 + dv_3")
lrm <- lm(as.formula(reg.f), data = db.reg)
lr.coef <- data.frame(summary(lrm)$coefficients)
lr.coef
cumsum(lr.coef$Estimate)
#check
as.data.frame(amt.s)
diff(amt.s$qual.mean)
Run the code above in your browser using DataLab