【问题标题】:Logistics regression in R plotting Bootstrap using Titanic DatasetR中的逻辑回归使用泰坦尼克数据集绘制引导程序
【发布时间】:2021-01-30 12:39:04
【问题描述】:

我正在为一门统计在线课程做练习。我需要使用 Titanic 数据集在 R 中创建逻辑回归。因此,我想应用 bootstrap 方法来创建和绘制 95% 置信区间来预测逻辑回归。

当我运行 bootstrap 命令并想要绘制它时,我收到错误消息:“t* 的所有值都等于 0.0159971772980342”。此外,我得到的偏差和标准误差为 0,这是不正确的。我猜在设置 bootstrap 命令时有错误,但很遗憾我找不到它。我可以尝试什么?

我的代码:

library(boot)

set.seed(50000)

logit_test <- function(data, indices) {  
  dt <- data[indices,]  
  fit <- glm(Clean_data$Survived ~ Fare, data = Clean_data, family = "binomial")  
  return(coef(fit))  
}
boot_strap <- boot(  
  data = Clean_data, 
  statistic = logit_test, 
  R = 100)

boot.ci(boot.out = boot_strap,  
        type = c("basic"))


#Now we look at the results and plot them

boot_strap

plot(boot_strap, index=2)

我的输出:

> library(boot)
> 
> set.seed(50000)
> 
> logit_test <- function(data, indices) {  
+   dt <- data[indices,]  
+   fit <- glm(Clean_data$Survived ~ Fare, data = Clean_data, family = "binomial")  
+   return(coef(fit))  
+ }
> boot_strap <- boot(  
+   data = Clean_data, 
+   statistic = logit_test, 
+   R = 100)
> 
> boot.ci(boot.out = boot_strap,  
+         type = c("basic"))
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 100 bootstrap replicates

CALL : 
boot.ci(boot.out = boot_strap, type = c("basic"))

Intervals : 
Level      Basic         
95%   (-0.8968, -0.8968 )  
Calculations and Intervals on Original Scale
Some basic intervals may be unstable
> boot_strap

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = Clean_data, statistic = logit_test, R = 100)


Bootstrap Statistics :
       original  bias    std. error
t1* -0.89682819       0           0
t2*  0.01599718       0           0
> plot(boot_strap, index=2)
[1] "All values of t* are equal to  0.0159971772980342"

【问题讨论】:

  • 我在下面回答了您的问题,但以后请贴出代码本身,而不是代码的图片——这会让我们更容易提供帮助。
  • 我有点不同意 Dave - 他们评论的实质是正确的,但我认为在修复代码之前这个问题是题外话。图像中的代码/日志不适用于剪贴板、屏幕阅读器或搜索引擎机器人。

标签: r logistic-regression non-linear-regression statistics-bootstrap


【解决方案1】:

问题是您的引导函数没有使用引导数据来拟合模型。你有这个功能:

logit_test <- function(data, indices){
  dt <- data[indices, ]
  fit <- glm(Clean_Travelers$Survived ~ FARE, data=Clean_Travelers, 
             family=binomial)
  return(coef(fit))
}

注意有几个问题,一个是你应该在data=参数中使用dt,但你也不应该使用Clean_Travelers$Survived作为因变量,它应该只是@987654325 @ 因为您想确保您不是从原始数据中获取该变量,而是从引导数据中获取该变量。像这样的引导功能应该可以工作:

logit_test <- function(data, indices){
  dt <- data[indices, ]
  fit <- glm(Survived ~ FARE, data=dt, family=binomial)
  return(coef(fit))
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-01
    • 2019-02-28
    • 2021-11-10
    • 2015-05-15
    • 2021-07-29
    • 1970-01-01
    • 2022-07-25
    • 2017-03-08
    相关资源
    最近更新 更多