86 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Maximzzz am 8 Mär. 2015
Kommentiert: Thomas Possidente am 1 Dez. 2021
Akzeptierte Antwort: David Young
Hello!
I have an array with historical data and would like to know where an exogenous variable fits in this array using percentile.
Let's assume a vector with 1:1000 and 950 as a given, the function should return 95%.
It would be possible to create a function to do the task, but maybe matlab has a built-in function to do this ?
Thanks a lot, Max.
0 Kommentare -2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden
-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden
Melden Sie sich an, um zu kommentieren.
Melden Sie sich an, um diese Frage zu beantworten.
Akzeptierte Antwort
David Young am 8 Mär. 2015
⋮
Bearbeitet: David Young am 8 Mär. 2015
In MATLAB Online öffnen
% Test data
historicalData = rand(1000, 1);
exogenousVariable = 0.7;
% Compute centile
nless = sum(historicalData < exogenousVariable);
nequal = sum(historicalData == exogenousVariable);
centile = 100 * (nless + 0.5*nequal) / length(historicalData);
This actually computes 94.95 rather than 95 for your example, because the test value is equal to one of the data points. You can round to the nearest whole number or to any other number of significant figures using the round function.
2 Kommentare Keine anzeigenKeine ausblenden
Keine anzeigenKeine ausblenden
Maximzzz am 8 Mär. 2015
Direkter Link zu diesem Kommentar
https://de.mathworks.com/matlabcentral/answers/182131-percentile-of-a-value-based-on-array-of-data#comment_270675
In MATLAB Online öffnen
Hello, thanks for your answer! After some research on my own I came up with another solution
function x = comp_percentile(datas,value)
perc = prctile(datas,1:100);
[c index] = min(abs(perc'-value));
x = index+1;
end
Thomas Possidente am 1 Dez. 2021
Direkter Link zu diesem Kommentar
https://de.mathworks.com/matlabcentral/answers/182131-percentile-of-a-value-based-on-array-of-data#comment_1863640
In MATLAB Online öffnen
Note that the original answer by David Young is more robust than the version in OP's comment. The version in OP's comment will only give percentile answers to the nearest integer percent. Additionally, David Young's answer can be easily modified to perform the operations on multiple exogenousVariables at once like so -
function centile = comp_percentile(data,value)
data = data(:)';
value = value(:);
nless = sum(data < value, 2);
nequal = sum(data == value, 2);
centile = 100 * (nless + 0.5.*nequal) / length(data);
end
Melden Sie sich an, um zu kommentieren.
Weitere Antworten (2)
the cyclist am 8 Mär. 2015
In MATLAB Online öffnen
Sounds like you want the prctile function.
You could have found this yourself by typing
docsearch percentile
at the command prompt.
1 Kommentar -1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden
-1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden
Maximzzz am 8 Mär. 2015
Direkter Link zu diesem Kommentar
https://de.mathworks.com/matlabcentral/answers/182131-percentile-of-a-value-based-on-array-of-data#comment_270673
Thank you for your answer!
If I am correct, prctile returns the value of a certain percentile (i.e. returns the value for the 42nd percentile) ? I would like juste the contrary, given a value I would like to know the closest percentile related to that value.
Melden Sie sich an, um zu kommentieren.
the cyclist am 8 Mär. 2015
This is the inverse of the percentile function, right? There is not a built-in function for that, as far as I know. There are a few contributions in the File Exchange. (They show up if you google the keywords inverse percentile matlab .) Here is one example.
0 Kommentare -2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden
-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden
Melden Sie sich an, um zu kommentieren.
Melden Sie sich an, um diese Frage zu beantworten.
Siehe auch
Kategorien
MATLABData Import and AnalysisDescriptive Statistics
Mehr zu Descriptive Statistics finden Sie in Help Center und File Exchange
Tags
- percentile
- rank
Produkte
- MATLAB
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
Es ist ein Fehler aufgetreten
Da Änderungen an der Seite vorgenommen wurden, kann diese Aktion nicht abgeschlossen werden. Laden Sie die Seite neu, um sie im aktualisierten Zustand anzuzeigen.
Website auswählen
Wählen Sie eine Website aus, um übersetzte Inhalte (sofern verfügbar) sowie lokale Veranstaltungen und Angebote anzuzeigen. Auf der Grundlage Ihres Standorts empfehlen wir Ihnen die folgende Auswahl: .
Sie können auch eine Website aus der folgenden Liste auswählen:
Amerika
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- Deutsch
- English
- Français
- United Kingdom(English)
Asien-Pazifik
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)
Kontakt zu Ihrer lokalen Niederlassung