Сегодня я заметил странное поведение в моем R-коде. Я попробовал пакет {boot.StepAIC}, который включает функцию начальной загрузки для результатов пошаговой регрессии с AIC. Однако я не думаю, что статистическая подоплека является здесь проблемой (. Надеюсь, ).
Я могу использовать функцию на верхнем уровне R. Это мой пример кода.
require(MASS)
require(boot.StepAIC)
n<-100
x<-rnorm(n); y<-rnorm(n,sd=2); z<-rnorm(n,sd=3); res<-x+y+z+rnorm(n,sd=0.1)
dat.test<-as.data.frame(cbind(x,y,z,res))
form.1<-as.formula(res~x+y+z)
boot.stepAIC(lm(form.1, dat.test),dat.test) # should be OK - works at me
Однако я хотел обернуть это в собственную функцию. Я передаю данные и формулу этой функции. Но я получаю сообщение об ошибке в boot.stepAIC ()о том, что:
подгонка модели не удалась в 100 образцах начальной загрузки. Ошибка в strsplit (nam.vars, " :"):не -символьный аргумент
# custom function
fun.boot.lm.stepAIC<-function(dat,form) {
if(!inherits(form, "formula")) stop("No formula given")
fit.lm<-lm(formula=form,data=dat)
return(boot.stepAIC(object=fit.lm,data=dat))
}
fun.boot.lm.stepAIC(dat=dat.test,form=form.1)
# results in an error
Так где же ошибка? Я полагаю, это должно иметь какое-то отношение к локальной и глобальной среде, не так ли?