Wie 99% Deckung in MATLAB berechnen?
-
24-09-2019 - |
Frage
Ich habe eine Matrix in MATLAB und ich brauche den 99% Wert für jede Spalte zu finden. Mit anderen Worten, der Wert so, dass 99% der Bevölkerung einen größeren Wert als es. Gibt es eine Funktion in MATLAB für das?
Lösung
Mit Quantilsfunktion.
Y = quantile(X,P);
, wobei X eine Matrix ist und P Skalar oder Vektor von Wahrscheinlichkeiten. Wenn beispielsweise P = 0,01, wird die Y-Vektor von Werten für jeden Spalt sein, so dass 99% der Spaltenwerte größer ist.
Andere Tipps
Die einfachste Lösung ist die Verwendung der Funktion Quantils als < a href = "https://stackoverflow.com/questions/2384977/finding-99-coverage-in-matlab/2385024#2385024"> igitt vorgeschlagen.
Y = quantile(X,0.01);
Allerdings müssen Sie die Statistics Toolbox die Funktion verwenden Quantils . Eine Lösung, die nicht abhängig von Werkzeugkästen ist, kann mit der Feststellung, dass Quantils ruft die Funktion PRCTILE , die sich die Funktion Built-in ruft INTERP1Q die primäre Berechnung zu tun. Für den allgemeinen Fall einer 2-D-Matrix, die keine NaN Werten Sie die Quantile jeden Spalt mit dem folgenden Code berechnen können:
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
Dies sollte man die gleichen Ergebnisse liefern wie der Aufruf von Quantils , ohne Werkzeugkästen zu benötigen.
Wenn Sie nicht über die Statistics Toolbox haben, gibt es immer
y=sort(x);
y(floor(length(y)*0.99))
oder
y(floor(length(y)*0.01))
je nachdem, was Sie gemeint.