У меня есть данные о гоночных соревнованиях, состоящие из времени гонки для участника, его позиции в гонке, независимой переменной x
и гонки. Я ищу способ предсказать исход в новой гонке. Не только победитель, но и весь рейтинг. Вот как выглядят данные:
df <- data.frame(
competitor = c("A", "B", "C", "A", "B", "C", "D"),
time = c(54.2, 48.3, 49.1, 105.2, 116.2, 112.5, 117.3),
position = c(3,1,2,1,3,2,4),
x = c(4, 6, 2, 3, 7, 5, 2),
race = c("race1", "race1", "race1",
"race2", "race2", "race2", "race2")
)
#> competitor time position x race
#> 1 A 54.2 3 4 race1
#> 2 B 48.3 1 6 race1
#> 3 C 49.1 2 2 race1
#> 4 A 105.2 1 3 race2
#> 5 B 116.2 3 7 race2
#> 6 C 112.5 2 5 race2
#> 7 D 117.3 4 2 race2
Одна идея, которая у меня возникла, состояла в том, чтобы реструктурировать данные таким образом, чтобы каждый конкурент "конкурировал" с любым другим конкурентом. Затем данные должны быть реструктурированы, чтобы выглядеть примерно так для первой гонки:
df_wide <- data.frame(
competitor = c("A", "B", "A", "C", "B", "C"),
opponent = c("B", "A", "C", "A", "C", "B"),
time = c(54.2,48.3, 54.2, 49.1, 48.3, 49.1),
x = c(3,1,3,2,1,2),
win = c(0,1,0,1,1,0),
race = c("race1"))
#> competitor opponent time x win race
#> 1 A B 54.2 3 0 race1
#> 2 B A 48.3 1 1 race1
#> 3 A C 54.2 3 0 race1
#> 4 C A 49.1 2 1 race1
#> 5 B C 48.3 1 1 race1
#> 6 C B 49.1 2 0 race1
Тогда я полагаю, что смогу смоделировать вероятность того, что А победит над В в новой гонке и, таким образом, предсказать позицию.
Кто-нибудь знает удобный способ реструктуризации таких данных?