Comment calculer la couverture de 99% en Matlab?
-
24-09-2019 - |
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?
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.