| 408 | } |
| 409 | |
| 410 | @Override |
| 411 | public double skewness() |
| 412 | { |
| 413 | double mean = mean(); |
| 414 | |
| 415 | double numer = 0, denom = 0; |
| 416 | |
| 417 | for(int i = 0; i < used; i++) |
| 418 | { |
| 419 | numer += pow(values[i]-mean, 3); |
| 420 | denom += pow(values[i]-mean, 2); |
| 421 | } |
| 422 | |
| 423 | //All the zero's we arent storing |
| 424 | numer += pow(-mean, 3)*(length-used); |
| 425 | denom += pow(-mean, 2)*(length-used); |
| 426 | |
| 427 | numer /= length; |
| 428 | denom /= length; |
| 429 | |
| 430 | double s1 = numer / (pow(denom, 3.0/2.0) ); |
| 431 | |
| 432 | if(length >= 3)//We can use the bias corrected formula |
| 433 | return sqrt(length*(length-1))/(length-2)*s1; |
| 434 | |
| 435 | return s1; |
| 436 | } |
| 437 | |
| 438 | @Override |
| 439 | public double kurtosis() |