आर

2011-10-21 11 views
5

में एनोवा बॉक्सप्लॉट पर पोस्टहोक लेबल यदि मेरे पास कुछ डेटा है और एनोवा और पोस्ट-हाॉक टेस्ट करते हैं, तो मैं एक बॉक्सप्लॉट कैसे बना सकता हूं जो आर के बाहर आकृति को संपादित करने के बजाय पोस्ट-होक वर्गीकरण को स्वचालित रूप से जोड़ता है। ?आर

उदाहरण के लिए, यहाँ कुछ डेटा आरंभ करने के लिए कर रहे हैं:

install.packages("reshape", dependencies=T) 
library(reshape) 

x <- rnorm(30) 
y <- rnorm(30)+1 
z <- rnorm(30)+0.5 

data.1 <- data.frame(x, y, z) 
data.2 <- melt(data.1) 

यहाँ एक सरल एक तरह से एनोवा और अनियोजित तुलना पोस्ट-हॉक परीक्षण के चल रहे सभी के लिए कोड है:

linear.model <- lm(value~variable, data=data.2) 
anova(linear.model) 

# Analysis of Variance Table 
# Response: value 
#   Df Sum Sq Mean Sq F value Pr(>F) 
# variable 2 10.942 5.4710 5.8628 0.004087 ** 
# Residuals 87 81.185 0.9332  

TukeyHSD(aov(linear.model)) 

# Tukey multiple comparisons of means 
# 95% family-wise confidence level 
# Fit: aov(formula = linear.model) 
# $variable 
      # diff  lwr  upr  p adj 
# y-x 0.8344105 0.2396705 1.42915051 0.0034468 
# z-x 0.2593612 -0.3353788 0.85410126 0.5539050 
# z-y -0.5750493 -1.1697893 0.01969078 0.0602975 

पर इस बिंदु पर, मैं समूह "ए" में समूह को वर्गीकृत करना चाहता हूं, समूह "बी" में समूह और "ए, बी" समूह में z। मैं एक बॉक्सप्लॉट बना सकता हूं, लेकिन आप अक्षरों के साथ इसे कैसे टिप्पणी करते हैं?

पहले, पाठ लेबल के साथ अपने डेटा फ्रेम (data.2) के लिए एक कॉलम जोड़ें::

boxplot(value~variable, data=data.2) 

उत्तर

6

आप ggplot2 पैकेज का उपयोग कोई आपत्ति नहीं है, यहाँ मैं कैसे आंकड़ा होगा है

data.2$posthoc[data.2$variable == "x"] <- "a" 
data.2$posthoc[data.2$variable == "y"] <- "b" 
data.2$posthoc[data.2$variable == "z"] <- "a,b" 

स्थापित करें और ggplot2 पैकेज लोड:

install.packages("ggplot2", dependencies=T) 
library(ggplot2) 

आंकड़ा के लिए कोड को समझने के लिए, मैं चरण में इसे बनाने जाएगा रों। पहले सिर्फ तीन समूहों में से प्रत्येक के लिए साधन साजिश:

qplot(data=data.2, 
    x = variable, 
    y = value, 
    stat = "summary", 
    fun.y = "mean", 
    geom = c("point") 
    ) 

इसके बाद, पाठ लेबल जोड़ें:

qplot(data=data.2, 
    x = variable, 
    y = value, 
    stat = "summary", 
    fun.y = "mean", 
    label = posthoc, 
    vjust = -12, 
    geom = c("point", "text") 
    ) 

अंत में, boxplot geom जोड़ने और इसे साफ एक छोटे से:

qplot(data=data.2, 
    x = variable, 
    y = value, 
    stat = "summary", 
    fun.y = "mean", 
    label = posthoc, 
    vjust = -12, 
    ylim = c(-1, 3.5), 
    geom = c("point", "text"), 
    main="ggplot2 ANOVA boxplot" 
    ) + 
    geom_boxplot(aes(fill=posthoc)) + 
    theme_bw() 

R anova boxplot with labels

+0

यह काम करता है! आधार आर ग्राफिक्स में एक ही एनोटेशन करने का कोई तरीका है? – user1006644

+1

हां, उदाहरण के लिए, 'टेक्स्ट (x = 1: 3, y = 3, c (" a "," b "," b, c ")) 'बॉक्सप्लॉट' फ़ंक्शन के बाद। – rcs

+0

धन्यवाद जेम्स और आरसीएस! – user1006644

2

यह सरल होगा

library(reshape) 

x <- rnorm(30) 
y <- rnorm(30)+1 
z <- rnorm(30)+0.5 

data.1 <- data.frame(x, y, z) 
data.2 <- melt(data.1) 
data.2$newgroup = factor(data.2$variable,labels=c("a","b","ab")) # only line added 
boxplot(value~newgroup, data=data.2) 
+0

धन्यवाद आहार, यह सहायक है! – user1006644