我想使用此处讨论的二项式数据实现二进制逻辑回归。此外,我想添加一个变量,该变量可以识别来自相同二项式数据点的脱离聚集的每个二进制数据点,以便我可以正确地说明它们在分析中的相关性。
下面我提出了到目前为止尝试的结果。它成功地通过各个协变量复制了行,但尚未产生二进制变量。任何帮助将非常感激。
##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
事先感谢您的任何帮助。
对于这种扩展,我发现最容易生成列表列,其中每一行的列表元素是该行的二进制向量,您可以使用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
使用data.table
和replace
:
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