2016-05-12 1 views
0

J'ai une question sur le tracé de la barre d'erreur avec un ensemble de données mesurées répétées. Je l'ensemble de données comme ceci:Comment utiliser la fonction "summarySEwithin()" pour analyser des données mesurées répétées?

Food_type Quantity Temperature Time Diameter 
    Food1  High  High  6 0.00100 
    Food1  Medium  High  6 0.00090 
    Food1  Low  High  6 0.00085 
    Food2  High  High  6 0.00100 
    Food2  Medium  High  6 0.00090 
    Food2  Low  High  6 0.00085 
    ... 

Je nourris une larves d'animaux avec différents types d'aliments, concentration différente de la nourriture et la culture des larves de température différente, tous les 6 jours, je mesure leur taille. Je veux tracer la barre d'erreur de cet ensemble de données, puisque les données sont répétées mesurées, j'ai besoin d'utiliser la fonction "SummarySEwithin()" pour résumer les données avant de les tracer. et aussi j'utilisé la fonction de "SummarySE()" et "normDatawithin()", suivi la méthode (enter link description here)

Voici mon code:

summarySEwithin(data, measurevar = "Diameter", groupvars= c("Quantity","Temperature", "Time"),idvar="quality") 

et j'ai essayé aussi d'ajouter une colonne de "Sujet" dans l'ensemble de données, et écrivez le code:

summarySEwithin(Data, measurevar = "Diameter", groupvars= c("Quality","Quantity","Temperature", "Time"),idvar="Subject") 

Ils ont tous l'erreur "argument non utilisé".

Quelqu'un peut m'aider avec mon cas? Toute réponse sera très appréciée. Merci.

+0

Pour ce genre de résumé, je pense que vous êtes mieux avec '' dplyr' ou data.table', c'est ce qu'ils sont très bons. Mais! «argument non utilisé» signifie presque toujours que vous incluez un paramètre supplémentaire dans votre appel de fonction, je vérifierais votre syntaxe. Alternativement, si vous utilisez le paquet plotly ou ggplot2, vous pouvez faire des boîtes à moustaches sans d'abord résumer vos données. – Shape

Répondre

0

Certaines données de test:

data <- data.frame(expand.grid(Quality = c('Food1','Food2'), 
          Quantity = c('High', 'Medium', 'Low'), 
          Temperature = c('High','Low'), 
          Time = 1:6, 
          Sample = 1:3)) 
data$Diameter <- runif(NROW(data)) 

solution dplyr:

library(dplyr) 
# I'm using standard dev as my measurement of error, but you can use 
# any other definition you want 
plotdata <- 
data %>% 
    group_by(Quality, Quantity, Temperature, Time) %>% 
    summarise(DiameterMean = mean(Diameter), 
      DiameterErr = sd(Diameter)) %>% 
    arrange(Time) 

solution data.table:

library(data.table) 
data <- setDT(data) 
plotdata <- data[,.(DiameterMean = mean(Diameter), 
        DiameterErr = sd(Diameter)), 
       by = .(Quality, Quantity, Temperature, Time)][order(Time)] 

tracer maintenant, soit avec plotly ou ggplot2:

library(plotly) 
plot_ly(data = plotdata, 
     y = DiameterMean, 
     x = Time, 
     error_y = list(array = DiameterErr), 
     color = paste0(Quantity,'-', Quality,'-',Temperature)) 

ggplot2:

library(ggplot2) 
ggplot(data = plotdata) + 
    geom_line(aes(x = Time, 
       y = DiameterMean, 
       color = paste0(Quantity,'-', Quality,'-',Temperature))) + 
    geom_errorbar(aes(x = Time, 
        ymin = DiameterMean - DiameterErr, 
        ymax = DiameterMean + DiameterErr, 
        color = paste0(Quantity,'-', Quality,'-',Temperature)))