stdlib-js / stdlib-js/stdlib

Incremental skewness and other higher moments when provided equal values do not yield expected results

Open
#287 1 comment 0 reactions 0 assignees View on GitHub
Bug Math Statistics
Dominant language
JavaScript
Stars
6k
Forks
1.3k
Avg merge
1d 3h
Merged PRs (30d)
611

Description

## Checklist

> Please ensure the following tasks are completed before filing a bug report.

- [x] Read and understood the [Code of Conduct][code-of-conduct].
- [x] Searched for existing issues and pull requests.

## Description

> Description of the issue.

Encountered a potential bug when using the incremental accumulators for skewness and kurtosis. Notably, when providing all equal values, the accumulators return `NaN`. However, for uniformly distributed values, the skewness is `0`.

## Related Issues

> Does this issue have any related issues?

No related issues in this repository. However, Pandas seems to have encountered a similar issue: https://github.com/pandas-dev/pandas/issues/18044.

## Questions

> Any questions for reviewers?

No.

## Other

> Any other information relevant to this issue? This may include screenshots, references, stack traces, sample output, and/or implementation notes.

No.

#### Demo

> If relevant, provide a link to a live demo.

N/A

#### Reproduction

> What steps are required to reproduce the unexpected output?

In order to reproduce this bug, do the following:

```javascript
var incrskewness = require( '@stdlib/stats/incr/skewness' );

var acc = incrskewnesss();

for ( var i = 0; i < 100; i++ ) {
acc( 10.0 );
}
console.log( acc() );
// => NaN
```

#### Expected Results

> What are the expected results?

The following results are expected:

```text
0
```

#### Actual Results

> What are the actual results?

The following are the actual results:

```text
NaN
```

#### Environments

> What environments are affected (e.g., `Node v0.4.x`, `Chrome`, `IE 11`)? If Node.js, include the `npm` version, operating system, and any other potentially relevant platform information.

All environments are affected.

[code-of-conduct]: https://github.com/stdlib-js/stdlib/blob/develop/CODE_OF_CONDUCT.md

Contributor guide

Open the contributing guide

Research direction

Start at the @stdlib/stats/incr/skewness entry point and run the supplied JavaScript reproduction with 100 equal values. Read the related incremental higher-moment implementation and its existing tests, then verify that equal inputs produce the expected zero result rather than NaN.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
analytics
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.