Я пытаюсь написать функцию, которая будет соответствовать 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 также становится независимой переменной. Можно ли изменить формулу перед тем, как поместить ее в train (), чтобы в модели не было wghts? Или, в качестве альтернативы, я могу хранить wghts где-нибудь еще? Я также думал поставить if (формула [[3]] == '.') И заменить '.' Всеми другими факторами, однако я не уверен, как это сделать. Спасибо!