Я пытаюсь написать функцию, которая будет соответствовать в GLM и отдай мне некоторые статистические данные:Обновление формулы внутри функции
library(caret)
library(marginalmodelplots)
data(MissAmerica08)
MissUSA <- MissAmerica08[,c(2,4,6,7,8,10)]
glm.binomial<-function(data,formula,num.trials,linkf="logit",
trctr=trainControl(method = "none"),conf.lvl=0.95)
{
result<-list()
lhs<-formula[[2]]
data[,"wghts"]<-rep(num.trials,length(data[,as.character(lhs)]))
data[,as.character(lhs)]<-data[,as.character(formula[[2]])]/num.trials #so the vector is in [0,1]
fit<-train(form=formula,data=data,family=binomial(),method="glm",
trControl=trainControl(method = "none"), weights=wghts)
result[["Statistics"]] <- summary(fit)
}
glm.binomial(formula=Top10~.,data=MissUSA,num.trials=9)
Моя проблема заключается в том, что, так как я помещаю wghts в кадре данных при установке модель векторных символов также становится объясняющей переменной. Можно ли изменить формулу перед тем, как поместить ее в поезд(), чтобы wghts не был в модели? Или, альтернативно, я могу хранить wghts в другом месте? Я также думал о том, чтобы положить if (formula [[3]] == '.') И заменить «.» Всеми другими факторами, однако я не уверен, как это сделать. Благодаря!
Спасибо за ваш комментарий. К сожалению, это не сработает, если с правой стороны у меня есть ». вместо факторов, сгруппированных вместе, и это моя фактическая проблема. Если у меня есть определенные факторы, входящие в формулу, моя функция работает отлично, но если «.» присутствует, он ломается. Считаете ли вы, что есть другой способ хранения данных в кадре данных, не считая его фактором? – Dean