Пользовательская стандартная ошибка начальной загрузки: числовой аргумент envir не равен единице

Я пишу собственный сценарий для загрузки стандартных ошибок в GLM в R и получаю следующую ошибку:

Ошибка в eval (predvars, data, env): числовой аргумент envir не равен единице

Может кто-нибудь объяснить, что я делаю не так? Мой код:

#Number of simulations
sims<-numbersimsdesired

#Set up place to store data
saved.se<-matrix(NA,sims,numberofcolumnsdesired)
y<-matrix(NA,realdata.rownumber)
x1<-matrix(NA,realdata.rownumber)
x2<-matrix(NA,realdata.rownumber)

#Resample entire dataset with replacement
for (sim in 1:sims) {
    fake.data<-sample(1:nrow(data5),nrow(data5),replace=TRUE)

    #Define variables for GLM using fake data
    y<-realdata$y[fake.data]
    x1<-realdata$x1[fake.data]
    x2<-realdata$x2[fake.data]

    #Run GLM on fake data, extract SEs, save SE into matrix
    glm.output<-glm(y ~ x1 + x2, family = "poisson", data = fake.data)  
    saved.se[sim,]<-summary(glm.output)$coefficients[0,2]
    }

Пример: если мы предположим, что sims = 1000, и нам нужно 10 столбцов (предположим, вместо x1 и x2 у нас есть x1 ... x10), целью является набор данных из 1000 строк и 10 столбцов, содержащих SE каждой независимой переменной.


person user3614648    schedule 08.05.2014    source источник
comment
1) Почему вы не используете пакетную загрузку? 2) Как определяется fake.data?   -  person Roland    schedule 08.05.2014
comment
Кроме того, индексирование начинается с 1 в R, а не с 0.   -  person Roland    schedule 08.05.2014
comment
@Roland (1) Проект, над которым я работаю, НЕ предназначен для использования boot (). Было бы здорово, если бы я мог, но я должен создать это с нуля. (2) Я исправил fake.data как имя выборки набора данных, как я изначально планировал. В этом есть больше смысла?   -  person user3614648    schedule 08.05.2014
comment
В вашем коде есть множество ошибок / заблуждений. Я добавил к своему ответу альтернативу, в которой не используется boot.   -  person Roland    schedule 08.05.2014
comment
Было бы интересно понять ошибку, скрывающуюся за этим загадочным сообщением, хотя это помогает развить навыки отладки.   -  person user2105469    schedule 03.08.2014


Ответы (1)


Нет причин изобретать велосипед. Вот пример начальной загрузки стандартной ошибки перехвата с загрузочным пакетом:

set.seed(42)
counts <- c(18,17,15,20,10,20,25,13,12)
x1 <- 1:9
x2 <- sample(9)
DF <- data.frame(counts, x1, x2)
glm1 <- glm(counts ~ x1 + x2, family = poisson(), data=DF)
summary(glm1)$coef

#              Estimate Std. Error  z value     Pr(>|z|)
#(Intercept) 2.08416378 0.42561333 4.896848 9.738611e-07
#x1          0.04838210 0.04370521 1.107010 2.682897e-01
#x2          0.09418791 0.04446747 2.118131 3.416400e-02

library(boot)

intercept.se <- function(d, i) {
  glm1.b <- glm(counts ~ x1 + x2, family = poisson(), data=d[i,])
  summary(glm1.b)$coef[1,2]
}

set.seed(42)
boot.intercept.se <- boot(DF, intercept.se, R=999)

#ORDINARY NONPARAMETRIC BOOTSTRAP
#
#
#Call:
#boot(data = DF, statistic = intercept.se, R = 999)
#
#
#Bootstrap Statistics :
#     original     bias  std. error
#t1* 0.4256133 0.103114   0.2994377

Изменить:

Если вы предпочитаете делать это без пакета:

n <- 999
set.seed(42)
ind <- matrix(sample(nrow(DF), nrow(DF)*n, replace=TRUE), nrow=n)
boot.values <- apply(ind, 1, function(...) {
  i <- c(...)
  intercept.se(DF, i)
})

sd(boot.values)
#[1] 0.2994377
person Roland    schedule 08.05.2014