आप CORR
का उपयोग नहीं करना चाहेंगे - यदि आप "खाद्य संख्या" बनाते हैं और बीफ = 1, चिकन = 2, और पास्ता = 3 असाइन करते हैं, तो एक सहसंबंध गुणांक आपको बताएगा कि बढ़ी हुई पनीर बढ़ने से संबंधित है या नहीं "भोजन संख्या"। लेकिन जब आप इसे बनाते हैं तो "भोजन संख्या" उच्च या निम्न होने का मतलब कुछ भी नहीं है। तो, CORR
का उपयोग न करें जब तक कि आपके खाद्य पदार्थ वास्तव में किसी तरह से आदेश नहीं दिए जाते हैं, जैसे संख्याएं हैं।
सांख्यिकीविद इस बारे में बात करते हैं levels of measurement के साथ। लिंक्ड आलेख की भाषा में, MEAL_NUM
एक मामूली उपाय है - या भोजन के क्रम में शायद एक मामूली उपाय हो सकता है, लेकिन किसी भी तरह से, इस पर सहसंबंध गुणांक का उपयोग करना वास्तव में एक बुरा विचार है।
शायद आप कुछ ऐसा करना चाहते हैं जैसे "बीफ भोजन के प्रतिशत में पनीर भी है?" निम्नलिखित प्रत्येक घटक के लिए, इसमें युक्त भोजन की संख्या और इसे और पनीर युक्त भोजन की संख्या के लिए वापस आ जाएगा। चाल यह है कि COUNT
केवल गैर-शून्य मानों की गणना करता है।
SELECT Other.Ingredient,
COUNT(*) AS TotalMeals,
COUNT(Cheese.Ingredient) AS CheesyMeals
FROM table Other
LEFT JOIN table Cheese
ON (Cheese.Ingredient = 'Cheese'
AND Cheese.Meal_Num = Other.Meal_Num)
GROUP BY Other.Ingredient
चेतावनी: यदि आप किसी भी भोजन में दो बार एक घटक शामिल करते हैं तो गलत परिणाम लौटाते हैं।
संपादित करें: यह पता चला है कि आप विशेष रूप से पनीर में रुचि नहीं रखते हैं। आप वास्तव में "सहसंबंध" के सभी जोड़े चाहते हैं। इसलिए, हम "पनीर" को अमूर्त कर सकते हैं और उन्हें केवल प्रथम और द्वितीय सामग्री कह सकते हैं। मैंने इस पर एक "संभावितस्कोर" जोड़ा है जो प्रतिशत के भोजन की तरह कार्य करने की कोशिश करता है लेकिन अगर घटक के बहुत कम उदाहरण हैं तो मजबूत स्कोर नहीं देते हैं।
SELECT First.Ingredient,
Second.Ingredient,
COUNT(*) AS MealsWithFirst,
COUNT(First.Ingredient) AS MealsWithBoth,
COUNT(First.Ingredient)/(COUNT(*) + 3) AS PossibleScore,
FROM table First
LEFT JOIN table Second
ON (First.Meal_Num = Second.Meal_Num)
GROUP BY First.Ingredient, Second.Ingredient
जब स्कोर के अनुसार क्रमबद्ध, इस लौटना चाहिए
PASTA CHEESE 2 2 0.400
CHEESE PASTA 3 2 0.333
BEEF CHEESE 1 1 0.250
BEEF PASTA 1 1 0.250
FISH CHEESE 1 1 0.250
FISH PASTA 1 1 0.250
CHICKEN CHEESE 1 1 0.250
PASTA BEEF 2 1 0.200
PASTA FISH 2 1 0.200
CHEESE BEEF 3 1 0.167
CHEESE FISH 3 1 0.167
CHEESE CHICKEN 3 1 0.167
यह वास्तव में अच्छी जानकारी है। मुझे लगता है कि ओपी कोर() जैसे फ़ंक्शन का उपयोग करना चाहता था, इसलिए वह इसे केवल एक घटक के बजाय पूरे डेटा सेट पर लागू कर सकता था। –
@ जेम्स ओह; यह वास्तव में एक बहुत अच्छा मुद्दा है। यह मेरी "पनीर" तालिका को सामान्यीकृत करने के लिए एक दिलचस्प अभ्यास होगा ताकि इसे "पनीर" नहीं कहा जाता है, लेकिन मैं ओपी से सुनने के लिए इंतजार करूंगा। –
हां, मैं इस बात को पूरे डेटासेट पर चलाने की योजना बना रहा हूं। – owook