2017-11-14 2 views
0

ich einen Datenrahmen mit dieser Reihe habe:erstellen Grundstück mit Mittelwert und Standardabweichung berechnet nach jeder Iteration

read.table(text = "   V1  V2  V3  V4  V5  V6  V7  V8  V9  V10 
BACC 0.6203474 0.4466501 0.4820099 0.7003722 0.4851117 0.5173697 0.6073201 0.5911911 0.3759305 0.4627792") 

Jede der Säulen ist die gleiche Berechnung wird wiederholt (Stichprobe ändert, so Wert ausgeglichen getan Genauigkeit Änderungen). Ich möchte ein Diagramm erstellen, das einen iterativen Mittelwert mit Fehlerbalken (Standardabweichung) zeigt. Bei x = 1 Iteration beispielsweise wird nur der in Spalte V1 angegebene Punkt dargestellt. Für die Sekunde werden die erste und die zweite Spalte gemittelt und die Std berechnet. Entwickler und zeichnet dies auf. Für das dritte Mittel werden die ersten, zweiten und dritten Spalten gemittelt und es wird das gleiche gemacht, bis es schließlich alle Mittelwerte berechnet und die Standardabweichung von allen berechnet.

Wie kann diese Handlung gemacht werden? Oder ein Datenrahmen, der jede iterative Mittelwert-/Standardabweichung enthält? Meine realen Daten haben 1000 Spalten (nicht 10), also möchte ich etwas, das zu einem so großen Datensatz wie möglich erweitert werden kann. Wenn ich nur die Durchschnitts-/Standardabweichung alle 5 Iterationen berechnen möchte, wie würde das geschehen?

Ich würde wirklich schätzen, wenn Sie mir dabei helfen könnten.

Danke!

Antwort

0

können Sie tun dies einige tidyverse Pakete mit und TTR

Da ggplot2 mag ordentlich Daten in einem langen Format, diese Lösung verwendet gather alle Ihre Mess Spalten in Zeilen zu erhalten. Dies macht es auch einfacher, eine laufende Mittelwertbildung und eine Standardabweichung für Ihre Daten durchzuführen.

library(tidyverse) #for dplyr, tidyr, ggplot2 
library(TTR) # for runMean and runSD 

df <- read.table(text = "   V1  V2  V3  V4  V5  V6  V7  V8  V9  V10 
BACC 0.6203474 0.4466501 0.4820099 0.7003722 0.4851117 0.5173697 0.6073201 0.5911911 0.3759305 0.4627792") 


plot_data <- df %>% 
    gather(measurement, value) %>% 
    mutate(cum_mean = ifelse(value == first(value), value, runMean(value, 1, cumulative = TRUE)), 
     cum_sd = runSD(value, 1, cumulative = TRUE)) 

ggplot(plot_data, aes(x = measurement, y = cum_mean)) + 
    geom_col() + 
    geom_errorbar(aes(ymin = cum_mean - cum_sd, ymax = cum_mean + cum_sd), size = 0.2) 

enter image description here

Wenn Sie diese über eine Folge von Reihen tun wollen, beispiel jede fünfte Zeile, können Sie dies mit slice erreichen und einschließlich der Sequenz über die Anzahl der Zeilen in dem Datenrahmen.

plot_data <- df %>% 
    gather(measurement, value) %>% 
    slice(seq(1, nrow(.), 5)) %>% 
    mutate(cum_mean = ifelse(value == first(value), value, runMean(value, 1, cumulative = TRUE)), 
     cum_sd = runSD(value, 1, cumulative = TRUE)) 
Verwandte Themen