J'essaye de déterminer la distribution de la somme de N distributions univariées. Pouvez-vous suggérer une fonction qui me permet de saisir dynamiquement n'importe quel nombre N de distributions?

Cela marche:

library(distr)
var1 <- Norm(mean=14, sd=1)
var2 <- Norm(mean=10, sd=1)
var3 <- Norm(mean=9, sd=1)
conv <- convpow(var1+var2+var3,1)

Cela (évidemment) ne fonctionne pas car coller la liste ensemble crée une chaîne de caractères désordonnée, mais c'est le cadre de ma fonction idéale:

convolution_multi <- function(mean_list = c(14,10,9,10,50)){
  distribution_list <- lapply(X = mean_list, Norm, sd=1)
  conv_out <- convpow(paste(distribution_list,collapse="+"),1)
  return(conv_out)
}

Merci de votre aide!

1
ken 10 févr. 2021 à 21:02

1 réponse

Meilleure réponse

Vous pouvez utiliser Reduce pour ajouter à plusieurs reprises chaque RV les uns aux autres. Après cela, vous pouvez utiliser convpow

new_var <- Reduce("+", distribution_list)
convpow(new_var, 1)

Cela étant dit, l'appel à convpow ne fait absolument rien ici.

> identical(convpow(new_var, 1), new_var)
[1] TRUE
1
Dason 10 févr. 2021 à 19:01