Would you tell me the code for Fisher Pearson skewness?

3 visualizaciones (últimos 30 días)
Chris
Chris el 20 de Sept. de 2022
Comentada: Sim el 27 de Nov. de 2023
Would you tell me the code for Fisher Pearson skewness?
How can I get the skewness with Fisher Pearson formula..?

Respuesta aceptada

David Goodmanson
David Goodmanson el 21 de Sept. de 2022
Editada: David Goodmanson el 21 de Sept. de 2022
Hi Chris,
y = rand(1,100); % some data
m = mean(y);
n = numel(y);
scalc = (sum((y-m).^3)/n)/var(y,1)^(3/2)
s = skewness(y)
scalc agrees with Matlab's skewness function.
You have to be careful using the variance here (or the standard deviation). The var default is
sum((y-m)^2)/(n-1)
but for variance as used in Matlab's skewness function, you divide by n instead of (n-1). That means using var(y,1) rather than the default var(y). Same idea for std if that were used.

Más respuestas (1)

Walter Roberson
Walter Roberson el 20 de Sept. de 2022
FPskewness = sum(x - mean(x)) / numel(x) / std(x).^3
You would need to be more rigourous if you wanted to handle non-vectors.
  5 comentarios
John D'Errico
John D'Errico el 21 de Sept. de 2022
Jeff is correct. Skewness would be a scaled (normalized) 3rd central moment, so there MUST be a cube in there.
Sim
Sim el 27 de Nov. de 2023
Hi, what should be changed, in the @Walter Roberson formula, to make it correct? I do not understand...
y = rand(1,100); % some data
m = mean(y);
n = numel(y);
s = skewness(y) % matlab embedded function
s = -0.2898
scalc = (sum((y - m).^3) / numel(y)) / var(y,1)^(3/2) % David Goodmanson solution
scalc = -0.2898
FPskewness = sum(y - mean(y)) / numel(y) / std(y).^3 % Walter Roberson solution
FPskewness = -8.9461e-16

Iniciar sesión para comentar.

Categorías

Más información sobre Get Started with MATLAB en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by