Tôi nhận ra một hành vi lạ hôm nay với mã R của tôi. Tôi đã thử một gói {boot.StepAIC} bao gồm một hàm bootstrap cho kết quả hồi quy từng bước với AIC. Tuy nhiên tôi không nghĩ rằng nền thống kê là ở đây vấn đề (tôi hy vọng như vậy).
Tôi có thể sử dụng chức năng ở cấp cao nhất của R. Đây là mã ví dụ của tôi.chức năng hoạt động (boot.stepAIC) nhưng ném một lỗi bên trong một vấn đề môi trường chức năng khác?
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
Tuy nhiên, tôi muốn kết hợp với chức năng riêng. Tôi chuyển dữ liệu và công thức đến hàm đó. Nhưng tôi nhận được một lỗi trong vòng boot.stepAIC() nói:
mô hình phù hợp thất bại trong 100 mẫu bootstrap Lỗi trong strsplit (nam.vars, ":"): đối số phi vật
# 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
Vậy đâu là sai lầm? Tôi cho rằng nó phải có một cái gì đó để làm với môi trường địa phương và toàn cầu, phải không?
Tôi chưa sử dụng 'boot.stepAIC' trước đây nhưng nghi ngờ nó cũng có thể liên quan đến cách thức công thức được chuyển vào hàm (cũng liên quan đến các vấn đề môi trường). Xem http://stackoverflow.com/q/6877534, http://stackoverflow.com/q/7666807 để biết một số ý tưởng. Cụ thể, gọi 'lm' hoặc' boot.stepAIC' qua 'do.call' có thể giúp khi các đối số được đánh giá trước khi được truyền vào. Bạn cũng có thể điều tra gợi ý' as.name' trong các chú thích. Những vấn đề này là khó khăn - may mắn! – Aaron
http://stackoverflow.com/q/8998884/210673 cũng có vẻ là vấn đề tương tự. – Aaron
yep. Tôi đã đọc hết rồi. Tôi cho rằng các vấn đề được kết nối. – Sebastian