r - 如何将具有相同协变量的个体的二项式响应数据分解为伯努利,反之亦然?

标签 r function dataframe data.table tidyverse

我想使用讨论的二项式数据实现二元逻辑回归 here .此外,我想添加一个变量来标识来自同一二项式数据点的解聚合的每个二进制数据点,以便我可以在分析中正确解释它们的相关性。

下面我展示了到目前为止我尝试的结果。它成功地复制了具有各自协变量的行,但尚未生成二进制变量。任何帮助将非常感激。

#输入二项式数据的结构#

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

#我目前的尝试#

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

#输出二进制数据的预期结构#

# 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

在此先感谢您的帮助。

最佳答案

对于这种扩展,我发现生成一个列表列是最简单的,其中每行的列表元素是该行的二进制向量,您可以使用 c 创建它>rep 用于适当数量的 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

关于r - 如何将具有相同协变量的个体的二项式响应数据分解为伯努利,反之亦然?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56821928/

相关文章:

r - 通过分隔项将列表类型的列转换为长格式

sharepoint - 如何在 PowerShell 函数中安全地处理 SharePoint 对象?

c++ - 经过一定时间后调用函数

Python:如何在用分号分隔的 Pandas 数据框的列中查找值?

python - 使用条件打印数据框中的特定行

function - 如何检查 R 中对象类敏感函数的代码

Python 负二项式回归 - 结果与 R 中的结果不匹配

function - rust 封闭和fn不匹配

python - 获取 panda 数据框特定列值连续出现的第一个和最后一个索引

r - 复杂热图突出显示特定行