Package statistics: tricdf (bug?)

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Package statistics: tricdf (bug?)

vrozos
I think something is wrong with tricdf function (maybe triinv also).

 >> tricdf (0.7, 0.5, 1.0, 0.9)

ans =  0.16000

The correct answer should be 0.2.

MATLAB gives 0.2. This value can be also verified by the geometry of the
pdf triangle with base from 0.5 to 1, and height 4 at 0.9. Then, the
area of the triangle with base from 0.5 to 0.7 and height 2 (0.7 is in
the middle of the 0.5 to 0.9 segment) is 0.2.




Reply | Threaded
Open this post in threaded view
|

Re: Package statistics: tricdf (bug?)

Dmitri A. Sergatskov


On Tue, Jun 23, 2020 at 5:37 AM Evangelos Rozos <[hidden email]> wrote:
I think something is wrong with tricdf function (maybe triinv also).

 >> tricdf (0.7, 0.5, 1.0, 0.9)

ans =  0.16000

The correct answer should be 0.2.

MATLAB gives 0.2. This value can be also verified by the geometry of the
pdf triangle with base from 0.5 to 1, and height 4 at 0.9. Then, the
area of the triangle with base from 0.5 to 0.7 and height 2 (0.7 is in
the middle of the 0.5 to 0.9 segment) is 0.2.


tricdf code has few problems.  For you reported problem this fix should work:
<     area = (x(k_temp) - a).^2 * h;
---
>     area = (x(k_temp) - a).^2 * h / (c - a) / 2 ;
74c74
<     area = (b-x(k_temp)).^2 * h;
---
>     area = (b-x(k_temp)).^2 * h / (b - c) / 2 ;

A similar change should be done for the code segment that deals with the case of
A,B, and C being arrays rather than scalar. I really do not understand the intent of that code.
It requires the size of X, A, B, and C to be the same. That does not make much sense to me.
I think A, B and C should be scalars. I do not think there is a compatible matlab's function.

Dmitri.
--




Reply | Threaded
Open this post in threaded view
|

Re: Package statistics: tricdf (bug?)

vrozos

Thank you for you reply. This patch fixes tricdf for scalar arguments (triinv has also problem). Are the developers aware of it, should we file a bug?

On 25/06/2020 01:39, Dmitri A. Sergatskov wrote:


On Tue, Jun 23, 2020 at 5:37 AM Evangelos Rozos <[hidden email]> wrote:
I think something is wrong with tricdf function (maybe triinv also).

 >> tricdf (0.7, 0.5, 1.0, 0.9)

ans =  0.16000

The correct answer should be 0.2.

MATLAB gives 0.2. This value can be also verified by the geometry of the
pdf triangle with base from 0.5 to 1, and height 4 at 0.9. Then, the
area of the triangle with base from 0.5 to 0.7 and height 2 (0.7 is in
the middle of the 0.5 to 0.9 segment) is 0.2.


tricdf code has few problems.  For you reported problem this fix should work:
<     area = (x(k_temp) - a).^2 * h;
---
>     area = (x(k_temp) - a).^2 * h / (c - a) / 2 ;
74c74
<     area = (b-x(k_temp)).^2 * h;
---
>     area = (b-x(k_temp)).^2 * h / (b - c) / 2 ;

A similar change should be done for the code segment that deals with the case of
A,B, and C being arrays rather than scalar. I really do not understand the intent of that code.
It requires the size of X, A, B, and C to be the same. That does not make much sense to me.
I think A, B and C should be scalars. I do not think there is a compatible matlab's function.

Dmitri.
--