2015-09-11 14 views
5

Sono nuovo su R e sto tentando di scrivere una funzione di somma doppia con due ingressi peq. Per esempio, per calcolare la mia somma su WolframAlpha, io usoScrittura di una somma doppia in R

Sum[p^25 * (1-q)^j * Sum[(25 choose r) * ((j-1) choose (r-1)) * ((q * (1-p))/(p * (1 - q)))^r,{r,1,25}],{j,0,23}] 

Here's an example per p = .6 e q = .5

Questo dovrebbe essere facile da scrivere in R, ma non riesco a capire come farlo. (Mi rendo conto che la funzione di scelta diventa choose(n,k), ma le somme si stanno dimostrando intrattabili.)

Grazie per qualsiasi aiuto.

+1

Benvenuti in SO. +1 per fornire l'esempio su WolframAlpha. – jlhoward

risposta

3

Ecco un modo:

p <- 0.6 
q <- 0.5 
qp <- q*(1-p)/(p*(1-q)) 
f <- function(r,j) choose(25,r)*choose(j-1,r-1)*qp^r 
g <- function(j) p^25*(1-q)^j*sum(sapply(1:25,f,j)) 
sum(sapply(1:23,g)) 
# [1] 0.721113 

è possibile utilizzare funzioni anonime invece di f e g e mettere tutto su una riga, ma IMO questo è un po 'meno confusione.