2016-06-09 24 views
0

Dies ist eine sehr grundlegende R Frage, aber ich kann nicht scheinen, die richtigen Pakete zu finden, was ich will.Simulieren Array mit Scatter & bekannte Beziehung zu X

Ich habe ein Array 'X', mit n-Werten. Ich möchte ein Array 'Y' simulieren, das einer bekannten Beziehung Y = Alpha + Beta * X folgt. Außerdem möchte ich dem Y-Array eine intrinsische Streuung hinzufügen. Alpha, Beta und die intrinsische Streuung sollten vom Benutzer eingegeben werden.

Kann mir jemand helfen, wie ich das machen würde?

Danke!

Antwort

0

Hier ist eine Funktion, den deterministischen Teil der Korrelation erzeugt und dann fügt Rauschen über rnorm

make_correlation <- function(alpha, beta, scatter, x){ 
    # make deterministic part 
    y_det <- alpha + beta*x 
    # add noise 
    y <- rnorm(length(x), y_det, scatter) 
    return(y) 
} 

set.seed(20) 
x <- runif(20, 0, 10) 

answer <- make_correlation(alpha = 2, beta = 3, scatter = 2, x) 

Grundstück (Antwort ~ x)

enter image description here

+0

Dank! Ich glaube, meine Hauptverwirrung rührt von der wahren Bedeutung der intrinsischen Streuung her. Mathematisch ist Y = a + bx + e, wobei e die intrinsische zufällige Streuung von Y um die Linie ist. Um also eine solche Linie zu erstellen, wählt man Y-Werte aus einer Gaußschen Verteilung, die auf a + bx zentriert ist und eine stdev = e hat? –

+0

Ja, genau das habe ich getan. Für die lineare Regression würden Sie annehmen, dass der Fehler (oder die intrinsische zufällige Streuung) normal verteilt ist und sich nicht mit dem Mittelwert ändert. Du könntest es mit einer Codezeile tun und 'y <- alpha + beta * x + rnorm (Länge (x), 0, streuen)' wenn du willst. Dies würde nur zufällige Variation mit einem Mittelwert bei Null hinzufügen. Wie auch immer, wenn die Antwort angemessen ist, stellen Sie sicher, dass Sie sie so aufwerten, dass sie als gelöst gilt. –

+0

Vielen Dank für Ihre Hilfe! –

1

Meinst du das?

> x <- 1:5 
> alpha <- 2 
> beta <- 3 
> y <- alpha + beta * x 
> y 
[1] 5 8 11 14 17 

Und mit "streuen" meinst du Zufallsrauschen? Sie können wie so dass durch hinzugefügte Zufallswerte simulieren (I eine Normalverteilung verwenden):

> y <- alpha + beta * x + rnorm(5) 
> y 
[1] 4.710538 7.700785 10.588489 14.252223 16.108079