Elimizde 3 farklı algoritmanın 30 farklı durumda ürettikleri sonuçlar olsun. Bu sonuçları kullanarak Friedman rank testini nasıl yaparız. Öncelikle A, B ve C algoritmalarımızın her birinin her durumdaki ortalamalarının kayıtlı oldukları vektörlerin elimizde olduğunu varsayıyorum. Yani A=[30×1]’lik bir vektördür. Aynı şekilde B ve C’de bu şekildedir. Kıyaslama optimum değerlere göre yapılacağından kendi kıyaslamımızda ilgili fonksiyonun optimum değerini kullanmamız gerekir.

Kolaylık olması açısından A hep 1, B hep 2, C hep 3 üretmiş olsun ve optimum değerimiz 2 olsun. Direk görüleceği üzere B algoritmasının birinci, A ve C’nin ikinciliği paylaşması gerekmektedir. Bakalım öyle mi olacak?

A=ones(30,1)*1;
B=ones(30,1)*2;
C=ones(30,1)*3;
opt=2;
mutlakA=abs(A-opt);
mutlakB=abs(B-opt);
mutlakC=abs(C-opt);

[p,t,s] = friedman([mutlakA mutlakB mutlakC],1,'off')
ranks=s.meanranks

Not: Değerlerin negatif olmaması için mutlak değer işlemi uyguladık. Negatif değerli sonuçlarda sıkıntı çıkmaktadır.

Yukarıdaki kodu Matlab ortamında çalıştırdığınız zaman meanranks: [2.5000 1 2.5000] gibi bir çıktı veriyor. Görüleceği üzere A B C sıralamasında verdiğimiz için A’ya 2,5,B’ye 1, C’ye ise 2,5 değerlerini verdi. Tam da beklediğimiz gibi değil mi?

Diyelim ki, optimum değer 0 olsun. O zaman A 1., B, 2. C ise 3. olması gerekir. Hemen deneyelim.

opt değerini 0 yapıp yeniden çalıştırdığımızda meanranks: [1 2 3] değerini elde ediyoruz.

Siz de kıyaslayacağınız parametreleri bu şekilde vererek, Friedman rank testini yapabilirsiniz. Gerçi bu testin normal derecelendirmeden ne farkı var, bilmiyorum. Bilen istatistikçi varsa yorum yazsın, halkımızla paylaşalım.

Umarım faydalı olur.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir