कच्चे आंकड़ों के बजाय नमूना आंकड़ों को इनपुट करके आर में दो-नमूना टी-टेस्ट कैसे करें?


32

मान लीजिए कि हमारे पास नीचे दिए गए आँकड़े हैं

gender mean sd n
f 1.666667 0.5773503 3
m 4.500000 0.5773503 4

वास्तविक आंकड़ों के बजाय इस तरह के आंकड़ों का उपयोग करके आप दो-नमूना टी-टेस्ट कैसे करते हैं (यह देखने के लिए कि क्या किसी चर में पुरुषों और महिलाओं के बीच महत्वपूर्ण अंतर है)?

मैं ऐसा करने के लिए इंटरनेट पर कहीं भी नहीं मिल सकता है। अधिकांश ट्यूटोरियल और यहां तक ​​कि केवल वास्तविक डेटा सेट के साथ परीक्षण के साथ मैनुअल डील।


2
यह विकिपीडिया लेख प्लस आर-वितरण के कार्यों के लिए सहायता पृष्ठ (द्वारा मिला ?pt) - विशेष रूप से देखें pt()- क्या आपके पास खुद को करने के लिए आवश्यक सभी जानकारी है। और यदि आप ऐसा करते हैं तो आप आँकड़े और आर के बारे में बहुत कुछ जानेंगे ।
जोश ओ'ब्रायन ने

2
यहां पहले से ही अच्छे उत्तर हैं, और वास्तव में यह बहुत आसान है (और अच्छा अभ्यास) यह खुद के लिए एक फ़ंक्शन लिखने के लिए; हालाँकि, मैं सिर्फ इतना जोड़ता हूँ कि आप tsum.testपैकेज BSDA में फ़ंक्शन पर एक नज़र डाल सकते हैं , जो आपके द्वारा आपूर्ति किए गए सारांश डेटा से एक टी-टेस्ट (दो नमूने; वेल्श या बराबर-भिन्नता और एक नमूना भी) लागू करता है। यह मूल रूप से वेनिला आर में टी-टेस्ट की तरह काम करता है लेकिन सारांश जानकारी पर।
Glen_b -रिटनेट मोनिका

1
ईमानदार होने के लिए, जब मैं अपने शिक्षक को प्रोग्राम करना सीख रहा था, तो हमेशा कहा जाता था, "पहिया का फिर से आविष्कार न करें"। इसलिए, सबसे तार्किक समारोह होगा tsum.test()से BSDA libraryके रूप में @Nick कॉक्स ने कहा। यह बिल्कुल वैसा ही काम करता है जैसा @macro ने कोड की लाइनों में लिखा था। यदि प्रश्न पूछा जाता है, तो आर में टी-टेस्ट स्टेटिस्टिक कंप्यूटिंग के लिए पृष्ठभूमि गणना की समझ क्या है तो मार्को एक उत्तर के लिए अधिक उपयुक्त होगा। कृपया ध्यान दें, मैं किसी को भी अपमानित करने की कोशिश नहीं कर रहा हूं, बस अपनी पेशेवर पृष्ठभूमि से संबंधित मेरी व्यक्तिगत राय बता रहा हूं। और @marco कि कुछ साफ
सुथरी

जवाबों:


37

आप दो-नमूना -est के यांत्रिकी केटी बारे में जो कुछ भी जानते हैं उसके आधार पर आप अपना स्वयं का फ़ंक्शन लिख सकते हैं । उदाहरण के लिए, यह काम करेगा:

# m1, m2: the sample means
# s1, s2: the sample standard deviations
# n1, n2: the same sizes
# m0: the null value for the difference in means to be tested for. Default is 0. 
# equal.variance: whether or not to assume equal variance. Default is FALSE. 
t.test2 <- function(m1,m2,s1,s2,n1,n2,m0=0,equal.variance=FALSE)
{
    if( equal.variance==FALSE ) 
    {
        se <- sqrt( (s1^2/n1) + (s2^2/n2) )
        # welch-satterthwaite df
        df <- ( (s1^2/n1 + s2^2/n2)^2 )/( (s1^2/n1)^2/(n1-1) + (s2^2/n2)^2/(n2-1) )
    } else
    {
        # pooled standard deviation, scaled by the sample sizes
        se <- sqrt( (1/n1 + 1/n2) * ((n1-1)*s1^2 + (n2-1)*s2^2)/(n1+n2-2) ) 
        df <- n1+n2-2
    }      
    t <- (m1-m2-m0)/se 
    dat <- c(m1-m2, se, t, 2*pt(-abs(t),df))    
    names(dat) <- c("Difference of means", "Std Error", "t", "p-value")
    return(dat) 
}
x1 = rnorm(100)
x2 = rnorm(200) 
# you'll find this output agrees with that of t.test when you input x1,x2
t.test2( mean(x1), mean(x2), sd(x1), sd(x2), 100, 200)
Difference of means       Std Error               t         p-value 
        -0.05692268      0.12192273     -0.46687500      0.64113442 

1
मेरा संपादनt.test अस्वीकृत होने की तुलना कर रहा है, इसलिए यहां पुष्टि करने के लिए कुछ कोड हैं:(tt2 <- t.test2(mean(x1), mean(x2), sd(x1), sd(x2), length(x1), length(x2))); (tt <- t.test(x1, x2)); tt$statistic == tt2[["t"]]; tt$p.value == tt2[["p-value"]]
मैक्स गनीस

20

आप बस इसे हाथ से गणना करते हैं:

टी=(मतलब-मतलबमीटर)-अपेक्षित अंतरएस  एस=रों2n+रोंमीटर2nमीटर  कहा पे,    =nमीटर+n-2

अपेक्षित अंतर शायद शून्य है।

यदि आप पी-मान चाहते हैं तो बस pt()फ़ंक्शन का उपयोग करें :

pt(t, df)

इस प्रकार, कोड को एक साथ रखना:

> p = pt((((1.666667 - 4.500000) - 0)/sqrt(0.5773503/3 + 0.5773503/4)), (3 + 4 - 2))
> p
[1] 0.002272053

यह समान रूपांतरों को मानता है जो स्पष्ट है क्योंकि उनके पास समान मानक विचलन है।


Rपी

इस मामले में प्रदान की गई स्वतंत्रता स्वतंत्रता गलत है! आप अप्रयुक्त विचरण का उपयोग करते हैं जो असमान रूपांतरों को मानता है। इस प्रकार, Scatterwaite स्वीकृति का उपयोग करके स्वतंत्रता की डिग्री अधिक सटीक है।
lzstat

7

आप पुस्तक में सूत्र के आधार पर गणना कर सकते हैं (वेब ​​पेज पर), या आप यादृच्छिक डेटा उत्पन्न कर सकते हैं जिसमें बताए गए गुण हैं ( पैकेज mvrnormमें फ़ंक्शन देखें MASS) और t.testसिम्युलेटेड डेटा पर नियमित फ़ंक्शन का उपयोग करें ।


जब आप कहते हैं "आप बेतरतीब डेटा उत्पन्न कर सकते हैं जिसमें बताए गए गुण हैं", तो क्या आप का मतलब है कि जनसंख्या का मतलब और मानक विचलन के बराबर डेटा का अनुकरण करना या बाधा के तहत अनुकरण करना है कि नमूना माध्य और मानक विचलन पूर्व के बराबर हैं। निर्दिष्ट मूल्य?
मैक्रो

2
आप चाहते हैं कि सिम्युलेटेड डेटा में समस्या के अनुसार ठीक वैसा ही माध्य (s) और var (s) हो। ऐसा करने का एक तरीका (कई अन्य हैं) पैकेज mvrnormमें फ़ंक्शन का उपयोग करना है MASS(आपको TRI के लिए अनुभवजन्य तर्क सेट करने की आवश्यकता है)।
ग्रेग स्नो

2

सवाल आर के बारे में पूछता है, लेकिन मुद्दा किसी अन्य सांख्यिकीय सॉफ्टवेयर के साथ पैदा हो सकता है। उदाहरण के लिए स्टैटा में विभिन्न तथाकथित तात्कालिक कमांड हैं, जो अकेले सारांश आंकड़ों से गणना की अनुमति देते हैं। कमांड के विशेष मामले के लिए http://www.stata.com/manuals13/rttest.pdf देखें ttesti, जो यहां लागू होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.