【问题标题】:R calculate the standard error using bootstrap, Error in is.data.frame(x) :R 使用引导程序计算标准误差,is.data.frame(x) 中的错误:
【发布时间】:2014-01-01 21:31:01
【问题描述】:

我使用下一个程序代码使用bootstrap for Libras Data movement set 估计标准误差:

mydata<-read.table('C:/Users/Desktop/libra.txt', sep=',', header=TRUE)
head(data)
custom.boot <- function(times, data=mydata) {
  boots <- rep(NA, times)
  for (i in 1:times) {
    boots[i] <- sd(sample(data, length(data), replace=TRUE))/sqrt(length(data))  
  }
  boots
}
# Mean standard error
mean(custom.boot(times=1000))

但我得到了下一个错误:

Error in is.data.frame(x) : 
  (list) object cannot be coerced to type 'double'

您能帮我找出问题并给出解决方法吗?提前致谢!

【问题讨论】:

标签: r estimation standard-error statistics-bootstrap


【解决方案1】:

mydata 对象被读取为 395 x 91 data.framecustom.boot 正在努力解决这个问题。当我添加更改为data = mydata[, 1] 时,该函数运行时没有出现错误。如果你想保持你的函数不变,我要么循环遍历每一列,要么将所有列堆叠成一个长列。

编辑:

如果您想遍历此 data.frame 的所有列,我会编写一个类似于您所拥有的循环,但按每一列切片:

for(i in 1:ncol(mydata)){
  custom.boot(times=1000, data=mydata[, i])
  print(mean(custom.boot(times=1000)))
}

【讨论】:

  • 谢谢你的回答,你能解释一下我如何循环遍历每一列(我不明白我应该在哪里放另一个 cicle)?
  • 还有一个问题是这个代码可以用于分类错误估计吗?
  • 非常感谢您的帮助,但我不明白我应该把这个循环放在程序的哪个部分?我尝试按 # Mean standard error mean(custom.boot(times=1000)) 的顺序输入,但我再次收到错误消息 ("Error in is.data.frame(x) : (list) object cannot be coerced to输入'双'”)
  • 根据您的建议,我的程序如下所示:require(rpart) mydata
  • 但是,当我尝试执行它时,我收到以下错误:is.data.frame(x) 中的错误:(list) object cannot be coerced to type 'double' > 可能是你有一些想法如何解决?
猜你喜欢
  • 2013-08-22
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多