R-如何从具有相同协变量的个体到Bernoulli,反之亦然的个体进行二项式响应数据



我想使用此处讨论的二项式数据实现二进制逻辑回归。此外,我想添加一个变量,该变量可以识别来自相同二项式数据点的脱离聚集的每个二进制数据点,以便我可以正确地说明它们在分析中的相关性。

下面我提出了到目前为止尝试的结果。它成功地通过各个协变量复制了行,但尚未产生二进制变量。任何帮助将非常感激。

##structure intup二项式数据#

DT<-tibble::tibble(Successes = c(2,3,3), Trials=c(3,4,5), X1=c("Yes", "No", "Yes"), X2=c(10.7, 11.3, 9.9))
# A tibble: 3 x 4
  Successes Trials X1       X2
      <dbl>  <dbl> <chr> <dbl>
         2      3 Yes    10.7
         3      4 No     11.3
         3      5 Yes     9.9

#my尝试到目前为止的尝试#

DT.expanded <- DT[rep(seq(nrow(DT)), DT$Trials), ]
DT.expanded
# A tibble: 12 x 4
   Successes Trials X1       X2
       <dbl>  <dbl> <chr> <dbl>
          2      3 Yes    10.7
          2      3 Yes    10.7
          2      3 Yes    10.7
          3      4 No     11.3
          3      4 No     11.3
          3      4 No     11.3
          3      4 No     11.3
          3      5 Yes     9.9
          3      5 Yes     9.9
          3      5 Yes     9.9
          3      5 Yes     9.9
          3      5 Yes     9.9

#ETHEED输出二进制数据的结构#

# A tibble: 12 x 4
    Success   X1       X2
       <chr>  <chr> <dbl>
         1    Yes    10.7
         1    Yes    10.7
         0    Yes    10.7
         1    No     11.3
         1    No     11.3
         1    No     11.3
         0    No     11.3
         1    Yes     9.9
         1    Yes     9.9
         1    Yes     9.9
         0    Yes     9.9
         0    Yes     9.9

事先感谢您的任何帮助。

对于这种扩展,我发现最容易生成列表列,其中每一行的列表元素是该行的二进制向量,您可以使用crep创建它适用于0和1的适当数。获得列表列后,您可以扩展数据框以适合。例如,

library(tidyverse)
df <- tibble(
    Successes = c(2,3,3), 
    Trials = c(3,4,5), 
    X1 = c("Yes", "No", "Yes"), 
    X2 = c(10.7, 11.3, 9.9)
)
df <- df %>% mutate(binary = map2(Successes, Trials, 
                                  ~ c(rep(1, .x), 
                                      rep(0, .y - .x))))
df
#> # A tibble: 3 x 5
#>   Successes Trials X1       X2 binary   
#>       <dbl>  <dbl> <chr> <dbl> <list>   
#> 1         2      3 Yes    10.7 <dbl [3]>
#> 2         3      4 No     11.3 <dbl [4]>
#> 3         3      5 Yes     9.9 <dbl [5]>
df2 <- df %>% unnest()
df2
#> # A tibble: 12 x 5
#>    Successes Trials X1       X2 binary
#>        <dbl>  <dbl> <chr> <dbl>  <dbl>
#>  1         2      3 Yes    10.7      1
#>  2         2      3 Yes    10.7      1
#>  3         2      3 Yes    10.7      0
#>  4         3      4 No     11.3      1
#>  5         3      4 No     11.3      1
#>  6         3      4 No     11.3      1
#>  7         3      4 No     11.3      0
#>  8         3      5 Yes     9.9      1
#>  9         3      5 Yes     9.9      1
#> 10         3      5 Yes     9.9      1
#> 11         3      5 Yes     9.9      0
#> 12         3      5 Yes     9.9      0

使用data.tablereplace

的方法
library(data.table)
setDT(DT)
DT[, .(Success=replace(rep(0L, Trials), seq_len(Successes), 1L), 
       X1, X2), 
    by=seq_len(DT[,.N])][, -1L]

输出:

    Success  X1   X2
 1:       1 Yes 10.7
 2:       1 Yes 10.7
 3:       0 Yes 10.7
 4:       1  No 11.3
 5:       1  No 11.3
 6:       1  No 11.3
 7:       0  No 11.3
 8:       1 Yes  9.9
 9:       1 Yes  9.9
10:       1 Yes  9.9
11:       0 Yes  9.9
12:       0 Yes  9.9

最新更新