র‌্যাঙ্ক সহসাধন সহগ


13

সাধারণ পারস্পরিক সম্পর্ক সহগ (2 ডি) পরিমাপ করে একটি বিন্দুগুলির একটি সেট একটি লাইন দ্বারা কতটা ভাল বর্ণনা করা যেতে পারে, এবং যদি হ্যাঁ হয় তবে এর চিহ্নটি আমাদের জানায় যে আমাদের ইতিবাচক বা নেতিবাচক সম্পর্ক রয়েছে কিনা। তবে এটি ধরে নেয় যে পয়েন্টগুলির স্থানাঙ্কগুলি পরিমাপ হিসাবে পরিমাপ হিসাবে পরিমাপ হিসাবে ব্যাখ্যা করতে পারে।

যদি আপনি এটি না করতে পারেন তবে আপনি স্থানাঙ্কগুলি অর্ডার করতে পারেন তবে র‌্যাঙ্কের সহসংস্থান সহগ রয়েছে : এটি মোনোটোনিক ফাংশন দ্বারা পয়েন্টগুলি কীভাবে বর্ণনা করা যায় তা পরিমাপ করে।

চ্যালেঞ্জ

2 ডি পয়েন্টের একটি তালিকা দেওয়া, তাদের র‌্যাঙ্কের পারস্পরিক সম্পর্ক সহগ নির্ধারণ করুন ।

বিস্তারিত

  • আপনি ইনপুটটিকে ইতিবাচক পূর্ণসংখ্যা হিসাবে ধরে নিতে পারেন (তবে আপনার দরকার নেই), বা অন্য কোনও "সাজানোর" মান।
  • পয়েন্টগুলি পয়েন্টের তালিকা হিসাবে নেওয়া যেতে পারে, অথবা এক্স- এবং ওয়াই-কো-অর্ডিনেটস বা ম্যাট্রিক্স বা 2 ডি অ্যারে ইত্যাদির জন্য দুটি তালিকা হিসাবে নেওয়া যেতে পারে The
  • আউটপুট অবশ্যই একটি ভাসমান পয়েন্ট বা যুক্তিযুক্ত ধরণের হতে হবে, কারণ এটি 0 এবং 1 এর মধ্যে একটি আসল সংখ্যা উপস্থাপন করে।

সংজ্ঞা

র‌্যাঙ্ক: সংখ্যার একটি তালিকা দেওয়া X=[x(1),...,x(n)]আমরা প্রতিটি প্রবেশের জন্য র‌্যাঙ্কrx(i) নামে একটি ধনাত্মক সংখ্যা নির্ধারণ করতে পারি । আমরা তালিকাটি বাছাই করে এবং সাজানো তালিকায় সূচি নির্ধারণের মাধ্যমে এটি করি । যদি দু'জন বা তারও বেশি একই মান হয়, তবে আমরা কেবলমাত্র সংশ্লিষ্ট সূচকের গাণিতিক গড়টি পদ হিসাবে ব্যবহার করি। উদাহরণ:x(i)x(i)rx(i)x(i)

          List: [21, 10, 10, 25, 3]
Indices sorted: [4, 2, 3, 5, 1]

নম্বরটি 10এখানে দু'বার প্রদর্শিত হবে। বাছাই তালিকায় এটি সূচকগুলি দখল করবে 2এবং 3। এগুলির গাণিতিক গড়টি 2.5তাই র‌্যাঙ্কগুলি

         Ranks: [4, 2.5, 2.5, 5, 1]

মান পারস্পরিক সম্পর্কের সহগ : আসুন [(x(1),y(1)),(x(2),y(2)),...,(x(n),y(n))]দেওয়া পয়েন্ট হতে যেখানে প্রতিটি x(i)এবং y(i)একটি বাস্তব সংখ্যা প্রতিটি জন্য (wlog আপনি এটা একটি পূর্ণসংখ্যা অনুমান করতে পারেন।) i=1,...,nআমরা গনা র্যাঙ্ক rx(i) এবং ry(i)এর x(i)এবং y(i)যথাক্রমে।

দিন d(i) = rx(i)-ry(i)হতে র্যাঙ্ক পার্থক্য দিন Sসমষ্টি হতে S = d(1)^2 + d(2)^2 + ... + d(n)^2। তারপরে র‌্যাঙ্ক পারস্পরিক সম্পর্ক সহগ rho দ্বারা দেওয়া হয়

rho = 1 - 6 * S / (n * (n^2-1))

উদাহরণ

x   y   rx              ry   d      d^2
21  15  4               5   -1      1
10  6   2&3 -> 2.5      2    0.5    0.25
10  7   2&3 -> 2.5      3   -0.5    0.25
25  11  5               4    1      1
3   5   1               1    0      0

    rho = 1 - 6 * (1+0.25+0.25+1)/(5*(5^2-1)) = 0.875   

উইকিপিডিয়া থেকে : "কেবলমাত্র যদি সমস্ত এন র‌্যাঙ্কগুলি পৃথক পূর্ণসংখ্যার হয় তবে জনপ্রিয় সূত্রটি ব্যবহার করে এটি গণনা করা যায়"
rahnema1

এর সাথে আপনি কী বলতে চান?
flawr

আমি বলি যে আপনি যে সূত্রটি সরবরাহ করেছেন তা হ'ল বিশেষ ক্ষেত্রে যেখানে উইকিপিডিয়া অনুসারে র‌্যাঙ্কগুলি পূর্ণসংখ্যা হয়। তবে আপনি যেমন র‌্যাঙ্কগুলির জন্য সূত্রটি ব্যবহার করেছেন 2.5
rahnema1

ভাল আপনি যদি প্রথম স্থানে পূর্ণসংখ্যার ব্যবহার করছেন। এমনকি যদি আপনি এটি করে থাকেন তবে আপনি এখনও একটি ভাল অনুমান করতে পারবেন। অনেক লেখক এমনকি এই চ্যালেঞ্জের সূত্রটিকে সংজ্ঞা হিসাবে ব্যবহার করেন। তদাতিরিক্ত এটি মনে রাখবেন যে একটি র‌্যাঙ্কিং অস্থিতিশীল এবং সাধারণ পারস্পরিক সম্পর্ক সহগ হিসাবে এটির কোনও কার্যকর অর্থ হয় না। কিন্তু এই সমস্ত এই চ্যালেঞ্জের জন্য অপ্রাসঙ্গিক।
flawr

উত্তর:


5

এমএটিএল , 33 বাইট

,it7#utb,&S]2XQw)]-Us6*1GntUq*/_Q

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

,           % Do...twice
  it        %   Input a numeric vector. Duplicate
  7#u       %   Replace each element by a unique integer label (1, 2, ...)
  t         %   Duplicate
  b         %   Bubble up: moves original numeric vector to top
  ,         %   Do...twice
    &S      %     Sort and push the indices of the sorting
  ]         %   End
            %   The above do...twice loop gives the sorted indices (as
            %   explained in the challenge text) for the current input
  2XQ       %   Compute average for entries with the same integer label
  w         %   Swap: move vector of integer labels to top
  )         %   Index. This gives the rank vector for the current input
]           % End
-           % Subtract the two results. Gives d
Us          % Square each entry, sum of vector. S
6*          % Times 6. Gives 6*S
1G          % Push first input vector again
n           % Number of entries. Gives n
t           % Duplicate 
Uq          % Square, minus 1. Gives n^2-1
*           % Times. Gives n*(n^2-1)
/           % Divide. Gives 6*S/(n*(n^2-1))
_Q          % Negate, plus 1. Gives 1-6*S/(n*(n^2-1))

4
কীবোর্ড ম্যাসিংয়ের সাথে এমন সাদৃশ্যযুক্ত কিছু আমি কখনও দেখিনি যা আসলে আগে কিছু করে। +1
হাইপারনিউট্রিনো

5

আর , 64 60 বাইট

function(x,y)1-6*sum((rank(x)-rank(y))^2)/((n=sum(x|1))^3-n)

এটি অনলাইন চেষ্টা করুন!

rankআর-এ অন্তর্নির্মিত যা পছন্দসই র‌্যাঙ্কটি গণনা করে; বাকীটি বাকি কাজটি করা গণিত মাত্র is

4 টি বাইট সংরক্ষণের জন্য অপরাধমূলক ওয়েলগারকে ধন্যবাদ

মন্তব্যে উল্লিখিত হিসাবে , র‌্যাঙ্কের সম্পর্ক সম্পর্কিত সহগের বর্ণিত সংজ্ঞা স্পিয়ারম্যান রিলেকশন সহগের সাথে যথাযথভাবে মেলেনি, অন্যথায় একটি বৈধ উত্তর ২ 26 বাইট হবে:

function(x,y)cor(x,y,,"s")

2
পুঁচকে 4 বাইট খামচি: (ঢ ^ 3-ঢ) গত বন্ধনী জন্য
CriminallyVulgar

@ ক্রিমিনালি ভ্যালগার ধন্যবাদ! আপনার মন্তব্যের পরে আমার বিবাহের খুব বেশি দিন ছিল না তাই আমি এটি দেখিনি ...
জিউসেপ

3

পাইথন 3 , 141 বাইট

lambda X,Y,Q=lambda U,S=sorted:[S(U).index(y)+S(U).count(y)/2+.5for y in U]:1-6*sum((i[1]-i[0])**2for i in zip(Q(X),Q(Y)))/(len(X)**3-len(X))

এটি একটি বেনামি ফাংশন সংজ্ঞায়িত করে যা ইনপুটটিকে মান xএবং yমানগুলির সাথে সম্পর্কিত দুটি তালিক হিসাবে গ্রহণ করে । ফ্লোটিং-পয়েন্টের মান হিসাবে আউটপুট ফেরত দেওয়া হয়।

এটি অনলাইন চেষ্টা করুন!



0

দুর্ভাগ্যক্রমে দেখে মনে হচ্ছে যে প্রশ্নটিতে আরসিসির সংজ্ঞা স্পিয়ারম্যান আরহোর সাথে ঠিক মেলে না - এটি কেবল স্বতন্ত্র পূর্ণসংখ্যার ইনপুটগুলির ক্ষেত্রে কাজ করে। উদাহরণস্বরূপ আমার আর উত্তর বা এর সাথে যুক্ত মন্তব্যটি দেখুন।
জিউসেপে

প্রশ্নের লেখক মনে করছেন এটি এখানে ঠিক আছে । প্রশ্নটি স্পিয়ারম্যান আরএইচ সূতাকে একটি সংজ্ঞা হিসাবে দিয়েছে তাই আমি গাণিতিক ত্রুটি থাকা সত্ত্বেও এটিকে বৈধ বলে বিবেচনা করব।
নিক্স পাওয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.