मैं आर में ची स्क्वायर टेस्ट चलाने के लिए अपने डेटा को दोबारा सुधारने की कोशिश कर रहा हूं। मेरा डेटा एक कॉलम में मेरे स्वतंत्र चर के साथ और दो अन्य स्तंभों में मेरे स्वतंत्र चर समूहों की गणना के साथ स्थापित किया गया है। मैंने यहां अपने डेटा प्रारूप का एक उदाहरण बनाया है।

> example <- data.frame(category = c("x","y","x","y"), true = c(2,4,6,3), false = c(7,9,3,5))
> example
  category true false
1        x    2     7
2        y    4     9
3        x    6     3
4        y    3     5

जहां तक ​​​​मैं बता सकता हूं कि chisq.test फ़ंक्शन इस प्रारूप में डेटा को संभाल नहीं सकता है, इसलिए मुझे लगता है कि मुझे फ़ंक्शन चलाने के लिए नीचे दिए गए "अच्छे उदाहरण" की तरह दिखने के लिए डेटा को पुन: स्वरूपित करने की आवश्यकता है। मेरी समस्या यह है कि मैं एक बड़े डेटा सेट के लिए इस पिवोटिंग को करने का एक आसान तरीका सुनिश्चित नहीं कर रहा हूं।

> good_example <- data.frame(category = c('x','x','y','y','x','x','y','y'),
                           variable = c('true','false','true','false','true','false','true','false'),
                           count = c(2,7,4,9,6,3,3,5))
> good_example
  category variable count
1        x     true     2
2        x    false     7
3        y     true     4
4        y    false     9
5        x     true     6
6        x    false     3
7        y     true     3
8        y    false     5
> tab <- tapply(good_example$count, list(good_example$category, good_example$variable), FUN=sum)
> chisq.test(tab, correct = FALSE)

    Pearson's Chi-squared test

data:  tab
X-squared = 0.50556, df = 1, p-value = 0.4771
3
Emma Beck 19 पद 2019, 23:17

1 उत्तर

सबसे बढ़िया उत्तर

यदि आपको x और y के अनुसार सभी सत्य और असत्य का योग करना है, तो:

tab = do.call(rbind,by(example[,-1],example$category,colSums))
chisq.test(tab,correct=FALSE)

एक अधिक कॉम्पैक्ट संस्करण (@markus द्वारा इंगित), जहां आप श्रेणी के अनुसार डेटा विभाजित करते हैं, और विभाजित करने के लिए उपयोग किए जाने वाले कॉलम को छोड़कर सभी कॉलम पर योग फ़ंक्शन लागू करते हैं:

tab = aggregate(.~category, example, sum)

या शायद dplyr / tidyr संस्करण:

library(dplyr)
tab = example %>% group_by(category) %>% summarise_all(sum)
chisq.test(tab[,-1],correct=FALSE)
2
StupidWolf 19 पद 2019, 20:53