Question

J'ai une matrice dans Matlab et je dois trouver la valeur de 99% pour chaque colonne. En d'autres termes, la valeur telle que 99% de la population a une valeur plus grande que lui. Y at-il une fonction Matlab pour cela?

Était-ce utile?

La solution

Utilisez la fonction QUANTILE.

Y = quantile(X,P);

où X est une matrice et P est scalaire ou un vecteur de probabilités. Par exemple, si P = 0,01, Y sera vecteur de valeurs pour chacune des colonnes, de sorte que 99% des valeurs de la colonne sont plus grandes.

Autres conseils

La solution la plus simple consiste à utiliser la fonction QUANTILE comme < a href = "https://stackoverflow.com/questions/2384977/finding-99-coverage-in-matlab/2385024#2385024"> Yuk suggéré .

Y = quantile(X,0.01);

Cependant, vous aurez besoin du Statistics Toolbox pour utiliser la fonction QUANTILE . Une solution qui ne dépend pas de boîtes à outils peut être trouvée en notant que QUANTILE appelle la fonction PRCTILE , qui appelle lui-même la fonction intégrée INTERP1Q pour faire le calcul primaire. Pour le cas général d'une matrice 2-D qui ne contient pas NaN les valeurs que vous pouvez calculer les quantiles de chaque colonne en utilisant le code suivant:

P = 0.01;       %# Your probability
S = sort(X);    %# Sort the columns of your data X
N = size(X,1);  %# The number of rows of X
Y = interp1q([0 (0.5:(N-0.5))./N 1]',S([1 1:N N],:),P);  %'# Get the quantiles

Cela devrait vous donner les mêmes résultats que l'appel QUANTILE , sans avoir besoin de boîtes à outils.

Si vous ne disposez pas de la boîte à outils statistiques, il y a toujours

y=sort(x);
y(floor(length(y)*0.99))

ou

y(floor(length(y)*0.01))

en fonction de ce que vous vouliez dire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top