Úkol 1 Jáchym

Úkol 1 Jáchym

von Jáchym Valeš -
Number of replies: 1

je to potřeba spustit společně s tím datasetem d z předchozího chunku


lze si upravit runs na menší počet, 25 trvá asi minutu a půl, 100 téměř šest = kolikrát chci, abych si vytvořil 1000 nových a znovu randomizovaných párů, ze kterých pak vzejde jedna hodnota, v tomto případě B>A = 1:1.41, což je přibližně stejný pomět jako 0.43:0.57 viz hodina


lze samozřejmě doupravit, zejména poté první část, která výslovně pracuje s tím, že hodnoty 1-1000 jsou A a 1001-2000 jsou B

```{r}

result_list = list()


num_runs = 25


for (run in 1:num_runs) {

 # set.seed(run) 


  sample_A = sample(1:1000, 1000, replace = FALSE)

  sample_B = sample(1001:2000, 1000, replace = FALSE)


  count_A = 0

  count_B = 0

  count_Stejne = 0

  p = 1


  for (p in 1:1000) {

    a = sample_A[p]

    b = sample_B[p]

    result = d[b, "mq_measured"] / d[a, "mq_measured"]


    if (result > 1) {

      message("B")

      count_B = count_B + 1

    } else if (result < 1) {

      message("A")

      count_A = count_A + 1

    } else {

      message("Stejne")

      count_Stejne = count_Stejne + 1

    }

    p = p + 1

  }


  run_df = data.frame(

    Letter = c("A", "B", "Stejne"),

    Count = c(count_A, count_B, count_Stejne),

    Bayes_factor = c(count_A / count_B, count_B / count_A, count_Stejne)

  )


  result_list[[run]] = run_df

}


combined_results = do.call(rbind, result_list)


print(combined_results)  


#prumerna hondota Bayes factoru pro B

print(mean(combined_results[combined_results$Letter == "B", 3]))

```

In reply to Jáchym Valeš

Re: Úkol 1 Jáchym

von Jiří Lukavský -
Díky za sdílení úlohy. Ten nápad by šel vektorizovat, aby to bylo rychlejší. V tidyverse:

# rozebereme na 2 tabulky, prejmenujeme sloupecky, aby se to dalo zase slucovat
da <- d %>% filter(group == "A") %>% rename_with(~ paste0(.x, "_a"))
db <- d %>% filter(group == "B") %>% rename_with(~ paste0(.x, "_b"))

# dame obe tabulky vedle sebe do jedne, tu druhou (B) zamichame
dmix <- bind_cols(da, db %>% slice_sample(prop = 1))

# pocitame shrnuti, napriklad toto
dmix %>% summarise(b_larger_a_true_pc = mean(mq_true_b > mq_true_a))