# Why, when I calculate the skewness of a series with constants, do I not get NaN?

4 ビュー (過去 30 日間)
Angelavtc 2021 年 10 月 11 日
コメント済み: Cris LaPierre 2021 年 10 月 11 日
Dear Matlab community,
I have a simulation of normally distributed numbers with a mean of 76 and a standard deviation of 0, which describes a series of constant numbers with the value 76. To this simulation, I apply a function that also yields constants and, therefore, its skewness should be also NaN. Why, when I calculate their skewness, do I not get NaN but 1? How do I correct this error?
Np=20;
cb=2;
ab = 30*(Np/100)^(cb-1);
n=100;
Qd = normrnd(76,0,n,1);
Pw=ab*((Qd/Np).^(cb-1));
skewness(Pw)
skewness(Qd)
var(Qd)

サインインしてコメントする。

### 採用された回答

Cris LaPierre 2021 年 10 月 11 日
I suspect this has to do with how floating point numbers are stored in a computer. 76 can be stored exactly as is, but 22.8000 is not exactly 22.8 in your computer. If you round Pw, you will see the skewness is also NaN.
format long
Np=20;
cb=2;
ab = 30*(Np/100)^(cb-1);
Qd = normrnd(76,0,100,1);
Pw=ab*((Qd/Np).^(cb-1));
Pw(1)
ans =
22.799999999999997
skewness(Pw)
ans =
-1
var(Pw)
ans =
1.274926715508706e-29
skewness(round(Pw))
ans =
NaN
skewness(Qd)
ans =
NaN
var(Qd)
ans =
0
##### 3 件のコメント表示非表示 2 件の古いコメント
Cris LaPierre 2021 年 10 月 11 日
Consider taking a look at the algorithm the skewness function is using.

サインインしてコメントする。

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!