পারস্পরিক সম্পর্ক সহগের গণনা করুন


9

এক্স এবং ওয়াই ইভেন্টের জন্য কয়েকটি সিরিজ দেওয়া হয়েছে, পিয়ারসনের পারস্পরিক সম্পর্ক গুণনীয়ক গণনা করুন। প্রতিটি ইভেন্টের সম্ভাবনা সমান, সুতরাং প্রত্যাশিত মানগুলি প্রতিটি সিরিজের সংক্ষিপ্তসার এবং পরীক্ষার সংখ্যা দ্বারা ভাগ করে গণনা করা যেতে পারে।

ইনপুট

1   6.86
2   5.92
3   6.08
4   8.34
5   8.7
6   8.16
7   8.22
8   7.68
9   12.04
10  8.6
11  10.96

আউটপুট

0.769

সংক্ষিপ্ততম কোড জিতেছে। স্টিডিন বা আরগ দ্বারা ইনপুট হতে পারে। স্ট্যান্ডআউট দ্বারা আউটপুট হবে।

সম্পাদনা করুন: বিল্টিন ফাংশনগুলিতে সমাধানগুলিতে আরও বৈচিত্রের অনুমতি দেওয়ার জন্য (যেমন গণনা করা প্রত্যাশিত মান, বৈচিত্র, বিচ্যুতি ইত্যাদি) অনুমোদিত হওয়া উচিত নয়। যাইহোক, বিল্টিনগুলি (প্রদর্শনীর জন্য) ব্যবহার করে টাস্কের জন্য উপযুক্ত এমন ভাষাটি নির্দ্বিধায় দেখান।

ম্যাথামেটিকায় ইনপুট দেওয়ার জন্য ডেভিডের ধারণার ভিত্তিতে (বিল্টইন মানে ব্যবহার করে ৮ char চর)

m=Mean;x=d[[All,1]];y=d[[All,2]];(m@(x*y)-m@x*m@y)/Sqrt[(m@(x^2)-m@x^2)(m@(y^2)-m@y^2)]

m = Mean;
x = d[[All,1]];
y = d[[All,2]];
(m@(x*y) - m@x*m@y)/((m@(x^2) - m@x^2)(m@(y^2) - m@y^2))^.5

আমাদের নিজস্ব গড় (101 চর) ব্যবহার করে স্কারটিং

m=Total[#]/Length[#]&;x=d[[All,1]];y=d[[All,2]];(m@(x*y)-m@x*m@y)/((m@(x^2)-m@x^2)(m@(y^2)-m@y^2))^.5

m = Total[#]/Length[#]&;
x = d[[All,1]];
y = d[[All,2]];
(m@(x*y)-m@x*m@y)/((m@(x^2)-m@x^2)(m@(y^2)-m@y^2))^.5

ম্যাথমেটিকা ​​কোডটি খুব সুন্দর করে নিজের নিজস্ব ব্যবহার করে!
ডেভিডসি

এমএমএ কোডটি ছোট করা যেতে পারে। ডেভিড এর উত্তরে আমার মন্তব্য দেখুন। এছাড়াও, আপনার কোডে আপনি সংজ্ঞায়িত করতে পারেনm=Total@#/Length@#&
ড। বেলিসারিয়াস

উত্তর:


3

পিএইচপি 144 বাইট

<?
for(;fscanf(STDIN,'%f%f',$$n,${-$n});$f+=${-$n++})$e+=$$n;
for(;$$i;$z+=$$i*$a=${-$i++}-=$f/$n,$y+=$a*$a)$x+=$$i*$$i-=$e/$n;
echo$z/sqrt($x*$y);

মূল পোস্টে প্রদত্ত ফর্ম্যাটে এসটিডিএন থেকে ইনপুট নেয়। ফলাফল:

0,76909044055492

ভেক্টর ডট পণ্য ব্যবহার:

যেখানে ইনপুট ভেক্টর হয় দ্বারা নীচের দিকে স্থায়ী এবং যথাক্রমে।

পার্ল 112 বাইট

/ /,$e+=$`,$f+=$',@v=($',@v)for@u=<>;
$x+=($_-=$e/$.)*$_,$y+=($;=$f/$.-pop@v)*$;,$z-=$_*$;for@u;
print$z/sqrt$x*$y

0,76909044055492

একই রকম, ভিন্ন ভাষা। উভয় ক্ষেত্রেই, 'পঠনযোগ্যতা' জন্য নতুন লাইন যুক্ত করা হয়েছে, এবং প্রয়োজন নেই। দৈর্ঘ্যের একমাত্র উল্লেখযোগ্য পার্থক্য হ'ল প্রথম লাইন: ইনপুট পার্সিং।


5

গণিত 34 বাইট

পিয়ারসন পণ্যের মুহুর্তের সম্পর্কটি পাওয়ার কয়েকটি উপায় এখানে রয়েছে। তারা সব একই ফলাফল উত্পাদন। ডাঃ বেলিসারিয়াস থেকে: 34 বাইট

Dot@@Normalize/@(#-Mean@#&)/@{x,y}

অন্তর্নিহিত সহাসংক্রান্ত ফাংশন I : 15 অক্ষর

এটি ধরে নেওয়া হয় xএবং yপ্রতিটি ভেরিয়েবলের সাথে সম্পর্কিত তালিকাগুলি।

x~Correlation~y

0,76909


অন্তর্নিহিত সমঝোতা কার্য II : 31 টি অক্ষর

এটি ধরে নিয়েছে ডি আদেশযুক্ত জোড়গুলির একটি তালিকা।

d[[;;,1]]~Correlation~d[[;;,2]]

0,76909

ব্যবহারের ;;জন্য Allএকটি সিমন্স ধন্যবাদ।


স্ট্যান্ডার্ড বিচ্যুতি ফাংশনের উপর নির্ভর করে : 118 115 অক্ষর

পারস্পরিক সম্পর্ক নির্ধারণ করা যেতে পারে:

s=StandardDeviation;
m=Mean;
n=Length@d;
x=d[[;;,1]];
y=d[[;;,2]];
Sum[((x[[i]]-m@x)/s@x)((y[[i]]-m@y)/s@y),{i,n}]/(n-1)

0,76909


হ্যান্ড-ঘূর্ণায়িত সম্পর্ক : 119 টি অক্ষর

ধরে নেওয়া xএবং yতালিকাগুলি ...

s=Sum;n=Length@d;m@p_:=Tr@p/n;
(s[(x[[i]]-m@x)(y[[i]]-m@y),{i,n}]/Sqrt@(s[(x[[i]]-m@x)^2,{i,n}] s[(y[[i]] - m@y)^2,{i,n}]))

0,76909


আমি শেষ কোড স্নিপেটের জন্য 0.076909 পেয়েছি। এছাড়াও কেন আপনার s = স্ট্যান্ডার্ডডাইভেশন; কখন প্রয়োগ হয় না?
মাইল

প্রশ্ন-ভাষার উত্তর সম্পর্কে অনুমানের কথা বিবেচনা করে,
গাণিতিকায়

@ ভিটিলিয়াকৌরভ, হ্যাঁ, ভাল বিষয়, এখন বিবেচনায় নেওয়া হয়েছে।
ডেভিডসি

@milest। অবশ্যই! পূর্ববর্তী সমাধানগুলি থেকে স্ট্যান্ডার্ডডাইভেশনটি "উত্তরাধিকার" ছিল। আমি রাখি করব মনে sজন্য Sum
ডেভিডসি

@ মাইলস্ট চূড়ান্ত আউটপুটে ত্রুটিটিও /(n-1)পূর্বের সমাধান থেকে ভুলভাবে চালিত হওয়ার কারণে হয়েছিল। এখন সংশোধন।
ডেভিডসি

2

প্রশ্নঃ

ধরে নিলাম বিল্টিনগুলি অনুমোদিত এবং এক্স, ওয়াই ডেটা পৃথক ভেক্টর (cha অক্ষর):

x cor y

ডেভিড ক্যারাহার নির্দেশিত হিসাবে ডেটা যদি অর্ডারযুক্ত জোড় হিসাবে সংরক্ষণ করা থাকে তবে আমরা (12 টি অক্ষরের জন্য) পেয়ে যাব:

{(cor).(+)x}

পারস্পরিক সম্পর্কের ডেটাতে সাধারণত অর্ডারযুক্ত জোড় থাকে না?
ডেভিডসি

আমি এই মামলার বিকল্প যুক্ত করেছি
স্কিভি

2

ম্যাটল্যাব / অষ্টক

কেবল বিল্ট-ইনগুলি প্রদর্শনের উদ্দেশ্যে:

octave:1> corr(X,Y)
ans =  0.76909
octave:2> 

2

এপিএল 57

ডট পণ্য পদ্ধতির ব্যবহার:

a←1 2 3 4 5 6 7 8 9 10 11

b←6.86 5.92 6.08 8.34 8.7 8.16 8.22 7.68 12.04 8.6 10.96

(a+.×b)÷((+/(a←a-(+/a)÷⍴a)*2)*.5)×(+/(b←b-(+/b)÷⍴b)*2)*.5

0.7690904406         

2

জে, 30 27 বাইট

([:+/*%*&(+/)&.:*:)&(-+/%#)

এবার দুটি ফাংশন হিসাবে দুটি যুক্তি গ্রহণ করুন। এটি গণনা করার জন্য ভেক্টর সূত্র ব্যবহার করে।

ব্যবহার

   f =: ([:+/*%*&(+/)&.:*:)&(-+/%#)
   (1 2 3 4 5 6 7 8 9 10 11) f (6.86 5.92 6.08 8.34 8.7 8.16 8.22 7.68 12.04 8.6 10.96)
0.76909

ব্যাখ্যা

দুটি তালিকা a এবং b পৃথক যুক্তি হিসাবে গ্রহণ করে।

([:+/*%*&(+/)&.:*:)&(-+/%#)  Input: a on LHS, b on RHS
                   &(     )  For a and b
                         #     Get the count
                      +/       Reduce using addition to get the sum
                        %      Divide the sum by the count to get the average
                     -         Subtract the initial value from the average
                             Now a and b have both been shifted by their average
                             For both a and b
                *:             Square each value
         (+/)&.:               Reduce the values using addition to get the sum
                               Apply in the inverse of squaring to take the square root
                               of the sum to get the norm
       *&                    Multiply norm(a) by norm(b)
     *                       Multiply a and b elementwise
      %                      Divide a*b by norm(a)*norm(b) elementwise
 [:+/                        Reduce using addition to the sum which is the
                             correlation coefficient and return it

আপনি খুঁজে বিবেচনার পারেন xএবং yতাদের সাথে আমাদেরও সেলাই দ্বারা চূড়ান্ত লাইনে ,.আপনাকে দিতে((m@:*/@|:-*/@m)%%:@*/@(m@:*:-*:@m))x,.y
গ্যারেথ

আমাকে স্বীকার করতে হবে, কোডটি নিজেই দেখতে সুন্দর
লাগছে

+/ .*&(%+/&.:*:)&(-+/%#)জে ফোরামে ওলেগের স্বীকৃতিপ্রাপ্ত একটি সংক্ষিপ্ত 24 বাইট সংস্করণ রয়েছে ।
মাইল

1

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

E=lambda x:sum(x)/len(x)
S=lambda x:(sum((E(x)-X)**2for X in x)/len(x))**.5
lambda x,y:E([(X-E(x))*(Y-E(y))for X,Y in zip(x,y)])/S(x)/S(y)

2 সহায়ক ফাংশন ( Eএবং Sপ্রত্যাশিত মান এবং আদর্শ বিচ্যুতির জন্য যথাক্রমে) সংজ্ঞায়িত হয়। ইনপুটটি 2 টি পুনরাবৃত্ত (তালিকা, টিপলস, ইত্যাদি) হিসাবে প্রত্যাশিত। এটি অনলাইনে চেষ্টা করুন


1

ওরাকল এসকিউএল 11.2, 152 বাইট (প্রদর্শনীর জন্য)

SELECT CORR(a,b)FROM(SELECT REGEXP_SUBSTR(:1,'[^ ]+',1,2*LEVEL-1)a,REGEXP_SUBSTR(:1,'[^ ]+',1,2*LEVEL)b FROM DUAL CONNECT BY INSTR(:1,' ',2,LEVEL-1)>0);

আন golfed

SELECT CORR(a,b)
FROM
(
  SELECT REGEXP_SUBSTR(:1, '[^ ]+', 1, 2*LEVEL-1)a, REGEXP_SUBSTR(:1, '[^ ]+', 1, 2*LEVEL)b
  FROM DUAL
  CONNECT BY INSTR(:1, ' ', 2, LEVEL - 1) > 0
)

ইনপুট স্ট্রিংয়ের ডাটাবেসের মতো একই দশমিক বিভাজক ব্যবহার করা উচিত।


1

পাইপথন 3 সায়পাই সহ, 52 বাইট (প্রদর্শনীর জন্য)

from scipy.stats import*
lambda x,y:pearsonr(x,y)[0]

নাম প্রকাশে অনিচ্ছুক একজন ফাংশন যা তালিকা যেমন দুটি ডেটা সেটের ইনপুট নেয় xএবং y, এবং পারস্পরিক সম্পর্কের সহগের ফেরৎ।

কিভাবে এটা কাজ করে

এখানে খুব একটা চলছে না; সাইপাইয়ের একটি বিল্টিন রয়েছে যা অ-পারস্পরিক সম্পর্কের পরীক্ষার জন্য সহগ এবং পি-মান উভয়ই প্রদান করে, সুতরাং ফাংশনটি কেবল এটিতে ডেটা সেটগুলি পাস (coefficient, p-value)করে এবং বিল্টিন দ্বারা ফিরে আসা টিউলের প্রথম উপাদানটি প্রদান করে ।

আইডিয়নে চেষ্টা করে দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.