2013-07-23 12 views
5

मैं घरेलू सर्वेक्षण से डेटा सारांशित करने की कोशिश कर रहा हूं और क्योंकि मेरा अधिकांश डेटा स्पष्ट (कारक) डेटा है। मैं इसे कुछ प्रश्नों के जवाबों की आवृत्तियों के भूखंडों के साथ संक्षेप में देखना चाहता था (उदाहरण के लिए, कुछ प्रश्नों का उत्तर देने वाले परिवारों के प्रतिशत की बार साजिश, आत्मविश्वास अंतराल दिखाने वाले त्रुटि सलाखों के साथ)। मुझे यह उत्कृष्ट ट्यूटोरियल मिला जो मैंने सोचा था कि मेरी प्रार्थनाओं का जवाब था (http://www.cookbook-r.com/Manipulating_data/Summarizing_data/) लेकिन यह पता चला है कि यह केवल निरंतर डेटा के साथ मदद करने जा रहा है।आर अनुपात आत्मविश्वास अंतराल कारक

मुझे जो चाहिए वह कुछ ऐसा है जो मुझे इन अनुपातों की गणना और मानक त्रुटियों/आत्मविश्वास अंतराल के अनुपात की गणना करने की अनुमति देगा।

# X5employf X5employff N(count) proportion SE of prop. ci of prop 
# 1   1  20 0.64516129 ?    ?  
# 1   2   1 0.03225806 ?    ? 
# 1   3   9 0.29032258 ?    ? 
# 1   NA  1 0.290322581 ?   ? 
# 2   4    1 0.1   ?    ? 


structure(list(X5employf = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("1", "2", "3"), class = "factor"), X5employff = structure(c(1L, 2L, 3L, NA, 4L, 5L, 6L, 7L, 8L, 4L, 5L, 6L, 7L), .Label = c("1", "2", "3", "4", "5", "6", "7", "8"), class = "factor"), count = c(20L, 1L, 9L, 1L, 1L, 5L, 2L, 1L, 1L, 4L, 5L, 4L, 1L)), .Names = c("X5employf", "X5employff", "count"), row.names = c(NA, -13L), class = "data.frame") 

मैं तो ggplot (या समान) में barplots प्लॉट करने के लिए चाहते हो जाएगा का उपयोग कर:

अनिवार्य रूप से मैं सारांश तालिकाओं कि सवाल मेरी सर्वेक्षण डेटा में पूछा से प्रत्येक के लिए इस तरह दिखना उत्पादन करने में सक्षम होना चाहता हूँ आत्मविश्वास अंतराल दिखाते हुए त्रुटि बार के साथ ये सारांश डेटा।

मैंने ऊपर दिए गए कॉलम की गणना करने के लिए ऊपर दिए गए ट्यूटोरियल में दिए गए कोड में संशोधन करने का विचार किया था, हालांकि आर के सापेक्ष नवागंतुक के रूप में, थोड़ा संघर्ष कर रहा हूं! मैं ggply पैकेज के साथ प्रयोग कर रहे हैं, लेकिन अभी सिंटैक्स पर महान नहीं तो मैं निम्न कोड के साथ जहाँ तक इस रूप में प्राप्त करने के लिए कामयाब रहे:

> X5employ_props <- ddply(X5employ_counts, .(X5employf), transform, prop=count/sum(count)) 

लेकिन मैं इस के साथ अंत:

X5employf X5employff count  prop 
1   1   1 20 1.0000000 
2   1   2  1 1.0000000 
3   1   3  9 1.0000000 
4   2   4  1 0.2000000 
5   3   4  4 0.8000000 
6   2   5  5 0.5000000 
7   3   5  5 0.5000000 
8   2   6  2 0.3333333 
9   3   6  4 0.6666667 
10   2   7  1 0.5000000 
11   3   7  1 0.5000000 
12   2   8  1 1.0000000 
13   1  <NA>  1 1.0000000 

मेरी सभी अनुपात जा रहा है 1, शायद क्योंकि वे पंक्तियों और नहीं कॉलम भर में गणना की जा रही हैं

मैं अगर किसी को भी मदद या संकुल का पता कर सकता है सोचा/कोड जो मेरे लिए नौकरी करेगा!

+1

आप http://docs.ggplot2.org/current/geom_errorbar.html के बारे में पता कर रहे हैं? आप 'स्टेट = "पहचान" तर्क के साथ एक बारप्लॉट प्लॉट कर सकते हैं, अधिक जानकारी के लिए http://docs.ggplot2.org/current/geom_bar.html देखें। बेहतर प्रतिक्रिया प्राप्त करने के लिए, मेरा सुझाव है कि आप हमें कुछ प्रतिलिपि बनाने वाले डेटा प्रदान करें। –

+0

हाय रोमन, हाँ मैंने geom_errorbar पर ggplot2 दस्तावेज पढ़ा है, और पहले से ही मेरे बार प्लॉट का उत्पादन किया है। हालांकि, geom_errorbar के लिए आपको त्रुटि सलाखों की साजिश के लिए सीमा निर्दिष्ट करने की आवश्यकता है - यही कारण है कि मैं पहले अपने डेटा को सारांशित करने का प्रयास कर रहा हूं। आदर्श रूप में, मैं इसे स्वचालित करने का एक तरीका ढूंढ रहा हूं क्योंकि मेरे पास 49 चर हैं। –

+0

पहले तीन वैक्टर पूर्णांक '1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 9 20 21 22 23 24 25 26 27 28 2 9 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55' कारक 1 '1 3 1 1 1 3 1 1 1 3 1 1 1 2 2 3 3 3 1 2 2 2 2 2 1 1 1 3 3 3 3 3 3 2 1 1 3 1 3 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2' कारक 2 '1 4 1 2 4 3 1 1 6 1 1 1 5 5 6 7 5 1 6 6 7 5 4 1 3 1 6 5 5 5 6 4 5 3 3 5 1 4 5 1 1 1 1 1 3 3 3 1 3 1 1 1 3 8' –

उत्तर

3

द्विपदीय आत्मविश्वास अंतराल की गणना करने के लिए कई विधियां हैं और मुझे संदेह है कि इस विधि पर सबसे अधिक सहमति है कि कौन सी विधि सर्वोत्तम है। उस ने कहा, कई अलग-अलग तरीकों का उपयोग करके द्विपदीय आत्मविश्वास अंतराल की गणना करने के लिए यहां एक दृष्टिकोण है। मुझे यकीन नहीं है कि यह मदद करता है या नहीं।

library(binom) 

x <- c(3, 4, 5, 6, 7) 
n <- rep(10, length(x)) 

binom.confint(x, n, conf.level = 0.95, methods = "all") 

      method x n  mean  lower  upper 
1 agresti-coull 3 10 0.3000000 0.10333842 0.6076747 
2 agresti-coull 4 10 0.4000000 0.16711063 0.6883959 
3 agresti-coull 5 10 0.5000000 0.23659309 0.7634069 
4 agresti-coull 6 10 0.6000000 0.31160407 0.8328894 
5 agresti-coull 7 10 0.7000000 0.39232530 0.8966616 
6  asymptotic 3 10 0.3000000 0.01597423 0.5840258 
7  asymptotic 4 10 0.4000000 0.09636369 0.7036363 
8  asymptotic 5 10 0.5000000 0.19010248 0.8098975 
9  asymptotic 6 10 0.6000000 0.29636369 0.9036363 
10 asymptotic 7 10 0.7000000 0.41597423 0.9840258 
11   bayes 3 10 0.3181818 0.09269460 0.6058183 
12   bayes 4 10 0.4090909 0.15306710 0.6963205 
13   bayes 5 10 0.5000000 0.22352867 0.7764713 
14   bayes 6 10 0.5909091 0.30367949 0.8469329 
15   bayes 7 10 0.6818182 0.39418168 0.9073054 
16  cloglog 3 10 0.3000000 0.07113449 0.5778673 
17  cloglog 4 10 0.4000000 0.12269317 0.6702046 
18  cloglog 5 10 0.5000000 0.18360559 0.7531741 
19  cloglog 6 10 0.6000000 0.25266890 0.8272210 
20  cloglog 7 10 0.7000000 0.32871659 0.8919490 
21   exact 3 10 0.3000000 0.06673951 0.6524529 
22   exact 4 10 0.4000000 0.12155226 0.7376219 
23   exact 5 10 0.5000000 0.18708603 0.8129140 
24   exact 6 10 0.6000000 0.26237808 0.8784477 
25   exact 7 10 0.7000000 0.34754715 0.9332605 
26   logit 3 10 0.3000000 0.09976832 0.6236819 
27   logit 4 10 0.4000000 0.15834201 0.7025951 
28   logit 5 10 0.5000000 0.22450735 0.7754927 
29   logit 6 10 0.6000000 0.29740491 0.8416580 
30   logit 7 10 0.7000000 0.37631807 0.9002317 
31  probit 3 10 0.3000000 0.08991347 0.6150429 
32  probit 4 10 0.4000000 0.14933907 0.7028372 
33  probit 5 10 0.5000000 0.21863901 0.7813610 
34  probit 6 10 0.6000000 0.29716285 0.8506609 
35  probit 7 10 0.7000000 0.38495714 0.9100865 
36  profile 3 10 0.3000000 0.08470272 0.6065091 
37  profile 4 10 0.4000000 0.14570633 0.6999845 
38  profile 5 10 0.5000000 0.21765974 0.7823403 
39  profile 6 10 0.6000000 0.30001552 0.8542937 
40  profile 7 10 0.7000000 0.39349089 0.9152973 
41   lrt 3 10 0.3000000 0.08458545 0.6065389 
42   lrt 4 10 0.4000000 0.14564246 0.7000216 
43   lrt 5 10 0.5000000 0.21762124 0.7823788 
44   lrt 6 10 0.6000000 0.29997837 0.8543575 
45   lrt 7 10 0.7000000 0.39346107 0.9154146 
46  prop.test 3 10 0.3000000 0.08094782 0.6463293 
47  prop.test 4 10 0.4000000 0.13693056 0.7263303 
48  prop.test 5 10 0.5000000 0.20142297 0.7985770 
49  prop.test 6 10 0.6000000 0.27366969 0.8630694 
50  prop.test 7 10 0.7000000 0.35367072 0.9190522 
51  wilson 3 10 0.3000000 0.10779127 0.6032219 
52  wilson 4 10 0.4000000 0.16818033 0.6873262 
53  wilson 5 10 0.5000000 0.23659309 0.7634069 
54  wilson 6 10 0.6000000 0.31267377 0.8318197 
55  wilson 7 10 0.7000000 0.39677815 0.8922087 

मैं पूरी तरह सुनिश्चित करें कि आप क्या चाहते हैं नहीं कर रहा हूँ, लेकिन यहाँ एक मेज मुझे लगता है कि मानकों को आप के बाद कर रहे हैं के सभी शामिल हैं बनाने के लिए कोड है। मैंने Agresti-Coull विधि का उपयोग कर Package binom से कोड खोला।

conf.level <- 0.95 

x <- c(4, 5, 6)  # successes 
n <- c(10,10,10)  # trials 

method <- 'ac' 

# source code from package binom: 

xn <- data.frame(x = x, n = n) 
    all.methods <- any(method == "all") 
    p <- x/n 
    alpha <- 1 - conf.level 
    alpha <- rep(alpha, length = length(p)) 
    alpha2 <- 0.5 * alpha 
    z <- qnorm(1 - alpha2) 
    z2 <- z * z 
    res <- NULL 
    if(any(method %in% c("agresti-coull", "ac")) || all.methods) { 
    .x <- x + 0.5 * z2 
    .n <- n + z2 
    .p <- .x/.n 
    lcl <- .p - z * sqrt(.p * (1 - .p)/.n) 
    ucl <- .p + z * sqrt(.p * (1 - .p)/.n) 
    res.ac <- data.frame(method = rep("agresti-coull", NROW(x)), 
         xn, mean = p, lower = lcl, upper = ucl) 
    res <- res.ac  
    } 

SE <- sqrt(.p * (1 - .p)/.n) 
SE 

यह भी देखें: http://www.stat.sc.edu/~hendrixl/stat205/Lecture%20Notes/Confidence%20Interval%20for%20the%20Population%20Proportion.pdf

यहाँ सभी डेटा और मानकों युक्त तालिका है।

my.table <- data.frame(res, SE) 
my.table 

     method x n mean  lower  upper  SE 
1 agresti-coull 4 10 0.4 0.1671106 0.6883959 0.1329834 
2 agresti-coull 5 10 0.5 0.2365931 0.7634069 0.1343937 
3 agresti-coull 6 10 0.6 0.3116041 0.8328894 0.1329834 

मैंने अभी तक यह देखने के लिए जांच नहीं की है कि ये अनुमान Agresti की पुस्तकों में किसी भी उदाहरण से मेल खाते हैं या नहीं। हालांकि, फ्लोरिडा विश्वविद्यालय से नीचे पहला आर फ़ंक्शन पैकेज सीआईओ अनुमान के समान सीआई अनुमान देता है। फ्लोरिडा विश्वविद्यालय से नीचे दूसरा आर समारोह नहीं है।

http://www.stat.ufl.edu/~aa/cda/R/one-sample/R1/

x <- 4 
n <- 10 
conflev <- 0.95 

addz2ci <- function(x,n,conflev){ 
    z = abs(qnorm((1-conflev)/2)) 
    tr = z^2  #the number of trials added 
    suc = tr/2 #the number of successes added 
    ptilde = (x+suc)/(n+tr) 
    stderr = sqrt(ptilde * (1-ptilde)/(n+tr)) 
    ul = ptilde + z * stderr 
    ll = ptilde - z * stderr 
    if(ll < 0) ll = 0 
    if(ul > 1) ul = 1 
    c(ll,ul) 
} 
# Computes the Agresti-Coull CI for x successes out of n trials 
# with confidence coefficient conflev. 

add4ci <- function(x,n,conflev){ 
    ptilde = (x+2)/(n+4) 
    z = abs(qnorm((1-conflev)/2)) 
    stderr = sqrt(ptilde * (1-ptilde)/(n+4)) 
    ul = ptilde + z * stderr 
    ll = ptilde - z * stderr 
    if(ll < 0) ll = 0 
    if(ul > 1) ul = 1 
    c(ll,ul) 
} 
# Computes the Agresti-Coull `add 4' CI for x successes out of n trials 
# with confidence coefficient conflev. Adds 2 successes and 
# 4 trials. 

भी ध्यान रखें कि Agresti-Coull अंतराल के ऊपर पहली कड़ी के अनुसार अनुशंसित नहीं है जब < 40.

अन्य संकुल आप का उल्लेख के रूप में एन, मैं शायद ही कभी उन्हें इस्तेमाल , लेकिन मुझे पूरा यकीन है कि आप उपरोक्त कोड को आर स्क्रिप्ट में शामिल कर सकते हैं जो उन संकुल को कॉल करता है।

+0

हाय मार्क, धन्यवाद, यह लगभग वही है जो मैं चाहता हूं। लेकिन क्या मैं ti को binom.confint तर्क के एक तत्व को ddply पैकेज (या अन्य) में जोड़ सकता हूं। मैं उन तालिकाओं के निर्माण को स्वचालित करने की उम्मीद कर रहा हूं जिनमें इन सभी मूल्यों के साथ-साथ गिनती, मानक त्रुटि इत्यादि शामिल हैं, जिन्हें मैं ggplot में प्लॉट कर सकता हूं ... मैं उस बिंदु पर पहुंचने की कोशिश कर रहा हूं जहां मैं इन भूखंडों को निकाल सकता हूं मेरी डेटा तालिका में चर के किसी चर/सेट को जल्दी और 'सुंदर' परिणामों के साथ .... :) –

+0

@ user28321 संपादन देखें। मुझे आशा है कि वे मदद करेंगे। –

+0

हाय मार्क, आपकी त्वरित प्रतिक्रिया के लिए फिर से धन्यवाद, लेकिन मुझे यकीन नहीं है कि मुझे इसकी ज़रूरत है। सबसे पहले और सबसे महत्वपूर्ण मुझे पृष्ठ के शीर्ष पर मेरे मूल उदाहरण के अनुसार प्रत्येक कारक के अनुपात की आवश्यकता होती है और इससे प्रत्येक चर के लिए मानक त्रुटि/आत्मविश्वास अंतराल होता है। जैसेशीर्ष पर मेरे उदाहरण से मादाओं के अनुपात में सभी महिला रोगियों से एस्पिरिन लेना; सभी महिला रोगियों में से एक प्लेसबो लेने वाली महिला रोगियों का अनुपात; सभी पुरुषों से एस्पिरिन लेने वाले पुरुषों का अनुपात। इत्यादि। आपका उदाहरण एक मतलब देता है, और मैं काम नहीं कर सकता कि आप अनुपात से किसी माध्य पर कैसे पहुंचते हैं ?? –

2

यहाँ बहुपद 95% विश्वास अंतराल के आकलन के लिए एक विधि है।

library(MultinomialCI) 

x <- c(20,1,9,1) 

multinomialCI(x,alpha=0.05,verbose=FALSE) 

#   [,1]  [,2] 
# [1,] 0.5161290 0.8322532 
# [2,] 0.0000000 0.2193499 
# [3,] 0.1612903 0.4774145 
# [4,] 0.0000000 0.2193499 

मैंने अभी तक एसई के प्राप्त करने के तरीके को देखने के लिए स्रोत कोड को नहीं देखा है।

संबंधित मुद्दे