On Dec 26, 2009, at 4:56 PM, James Rome wrote:

Thanks David.

I wanted to calculate the Poisson distribution from my histograms to see
how closely they match it. So the formula is something like
pprob=((lambda**cnts)/factorial(cnts))*exp(lambda)

(Please don't reply privately.)

You have two vectors of different lengths, the lambdas and the counts, and you need to create the 2-way combinations in a form that can be supplied to a function.

And I was hoping to do it for the whole table at once.

Something like this?

> lambdas <-scan() # scan can read a sequence of numbers separated by white space.

1: 0.199190283 0.013765182 0.006477733 0.017813765 0.093117409 0.160323887
7: 0.401619433
8:
Read 7 items

> ldf <- expand.grid(lambdas, 1:15)
> str(ldf)
'data.frame':   105 obs. of  2 variables:
$ Var1: num  0.19919 0.01377 0.00648 0.01781 0.09312 ...
$ Var2: int  1 1 1 1 1 1 1 2 2 2 ...
- attr(*, "out.attrs")=List of 2
 ..$ dim     : int  7 15
 ..$ dimnames:List of 2
.. ..$ Var1: chr "Var1=0.199190283" "Var1=0.013765182" "Var1=0.006477733" "Var1=0.017813765" ...
 .. ..$ Var2: chr  "Var2= 1" "Var2= 2" "Var2= 3" "Var2= 4" ...

> ldf$countprob <- (ldf$Var1**ldf$Var2)/ factorial(ldf$Var2)*exp(ldf $Var1)
> ldf
          Var1 Var2     countprob
1   0.199190283    1 2.430946e-01
2   0.013765182    1 1.395597e-02
3   0.006477733    1 6.519830e-03
4   0.017813765    1 1.813394e-02
snipped remaining 100 lines...

--
David

Jim Rome

On 12/26/09 2:28 PM, David Winsemius wrote:

On Dec 26, 2009, at 2:02 PM, James Rome wrote:

I am sorry to be bothering the list so much.

I made a table of counts of flight arrivals by hour:

No, you made a list of tables, which is different.

cnts=tapply(Arrival4,list(Hour),table). There are up to 15 arrivals in a
bin.

Why not work with something more regular, like (this is all guesswork
and untested in absence of test data objects):

table(Arrival4, factor(Hour, levels=1:15)  )    ?
# or use whatever your max(arrivals) might be.

xx <- factor(sample(1:10, 4))
xx
[1] 9 4 7 1
Levels: 1 4 7 9

table(factor(xx, levels=1:10) )

1  2  3  4  5  6  7  8  9 10
1  0  0  1  0  0  1  0  1  0



cnts

$`0`

1  2  3  4  5  6  7  8  9 10 13
1  2  5  9  2  7  5  4  2  4  1

$`1`

1 2 3 4
3 2 2 1

$`2`

1 3
2 2
.  . .

My first problem is how to get this table filled in with the 0 slots.
E.g., I want
$`0`

1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
1  2  5  9  2  7  5  4  2  4   0   0   1   0   0

for all 24 hours. The elements of the tables are lists, but I do not
seem to be able to extract the names of each list, which I think would
allow this manipulation.

My second problem is that I want to compute probability distributions. I
have
lambda
        0           1           2           4           5
6           7
0.199190283 0.013765182 0.006477733 0.017813765 0.093117409 0.160323887
0.401619433
        8           9          10          11          12
13          14
0.191093117 0.177327935 0.318218623 0.404858300 0.463157895 0.495546559
0.435627530
       15          16          17          18          19
20          21
0.418623482 0.307692308 0.405668016 0.484210526 0.580566802 0.585425101
0.519028340
       22          23
0.556275304 0.503643725

and I need to calculate lambda**cnts for each bin, and each hour. I am
also unsure of how to do this.

Can you give a justification for this procedure? (I'm not saying it is
nonsense, only that it does not make make sense to me. So perhaps
there is some mathematical property about which I need education.)


David Winsemius, MD
Heritage Laboratories
West Hartford, CT

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to