Come calcolare la copertura del 99% in MATLAB?
-
24-09-2019 - |
Domanda
Ho una matrice in MATLAB e ho bisogno di trovare il valore del 99% per ogni colonna. In altre parole, il valore tale che il 99% della popolazione ha un valore più grande di quanto. C'è una funzione in MATLAB per questo?
Soluzione
Utilizzare la funzione quantile.
Y = quantile(X,P);
dove X è una matrice e P è scalare o vettoriale delle probabilità. Ad esempio, se P = 0,01, Y sarà vettore di valori per ogni colonna, in modo che il 99% dei valori di colonna sono più grandi.
Altri suggerimenti
La soluzione più semplice è quella di utilizzare la funzione di quantile come < a href = "https://stackoverflow.com/questions/2384977/finding-99-coverage-in-matlab/2385024#2385024"> yuk suggerito.
Y = quantile(X,0.01);
Tuttavia, è necessario il Statistics Toolbox per utilizzare la funzione quantile . Una soluzione che non dipende cassette possono essere trovate notando che quantile chiama la funzione PRCTILE , che si chiama la funzione incorporata INTERP1Q fare il calcolo primario. Per il caso generale di una matrice 2-D che non contiene NaN i valori si possono calcolare i quantili di ogni colonna utilizzando il seguente codice:
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
Questo dovrebbe dare gli stessi risultati come chiamare Quantile , senza bisogno di cassette degli attrezzi.
Se non si dispone del Statistics Toolbox, c'è sempre
y=sort(x);
y(floor(length(y)*0.99))
o
y(floor(length(y)*0.01))
a seconda di quello che volevi dire.