سؤال

لدي مصفوفة في MATLAB وأحتاج إلى العثور على قيمة 99 ٪ لكل عمود. وبعبارة أخرى ، فإن القيمة بحيث 99 ٪ من السكان لها قيمة أكبر منه. هل هناك وظيفة في Matlab لهذا؟

هل كانت مفيدة؟

المحلول

استخدام وظيفة الكمية.

Y = quantile(X,P);

حيث X عبارة عن مصفوفة و P هي عداد أو متجه من الاحتمالات. على سبيل المثال ، إذا كانت P = 0.01 ، فستكون Y متجهًا للقيم لكل عمود ، بحيث تكون 99 ٪ من قيم الأعمدة أكبر.

نصائح أخرى

أبسط حل هو استخدام الوظيفة الكمية مثل اقترح يوك.

Y = quantile(X,0.01);

ومع ذلك ، ستحتاج إلى أدوات الإحصاء لاستخدام الوظيفة الكمية. يمكن العثور على حل لا يعتمد على صناديق الأدوات من خلال الإشارة إلى ذلك الكمية يستدعي الوظيفة prctile, الذي يدعو نفسه الوظيفة المدمجة interp1q للقيام بالحساب الأساسي. للحالة العامة لمصفوفة ثنائية الأبعاد لا تحتوي على لا نان القيم يمكنك حساب كميات كل عمود باستخدام الكود التالي:

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

هذا يجب أن يعطيك نفس النتائج مثل الاتصال الكمية, ، دون الحاجة إلى أي أدوات.

إذا لم يكن لديك صندوق أدوات الإحصائيات ، فهناك دائمًا

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

أو

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

اعتمادا على ما قصدته.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top