2016-08-20 8 views
0

einen Datenrahmen wie Gegeben:Statistiken zu einem Grundstück (ggplot2) Hinzufügen

df1= data.frame(x = c(1:50)) 
df1$val=df1$x*(-0.35) 

I die ggplot2 verwendet und eine Regressionslinie mit dem Befehl hinzugefügt

t=ggplot(df1, aes(x=val, y=x))+geom_smooth(method=lm) + geom_point() 

Um die Gleichung zu addieren und der r-Wert habe ich versucht, den Code von dieser Frage Adding Regression Line Equation and R2 on graph

aber ich bin der Fehler immer

Error in terms.formula(formula, data = data) : 
    'data' argument is of the wrong type 

Irgendwelche Ideen, wie Sie das beheben können?

EDIT

Der Code, den ich

verwendet
my_sts <- function(df1){ 
    m <- lm(df1$x ~ df1$val, df1); 
    eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2, 
        list(a = format(coef(m)[1], digits = 2), 
         b = format(coef(m)[2], digits = 2), 
         r2 = format(summary(m)$r.squared, digits = 3))) 
    as.character(as.expression(eq));     
} 

tgen = t + geom_text(x = -10, y = 50, label = eq(df1), parse = TRUE) 
+1

Sie müssen den Code enthalten, der über den Fehler produziert. – nrussell

+0

Welchen Code haben Sie tatsächlich versucht? Bitte fügen Sie ein [reproduzierbares Beispiel] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) in Ihre Frage ein. Beziehe dich nicht auf Code wo sonst, da wir nicht genau wissen wie du es benutzt hast. Zeigen Sie uns genau die Parameter, die Sie bestanden haben. – MrFlick

+0

Was ist lm_eqn hier? –

Antwort

1

Dies wird von einer Konsolensitzung kopiert. Ich korrigierte zwei Dinge, die ich dachte, Fehler aufgetreten waren: 1) als Erwähnung in meinem Kommentar, den Sie nicht df1 $ in einer Formel verwenden sollen, wenn Sie ein Datum Argument haben, und 2) Ich glaube, Sie my_sts(df1)

> df1= data.frame(x = c(1:50)) 
> df1$val=df1$x*(-0.35) 
> my_sts <- function(df1){ 
+ m <- lm(x ~ val, df1); 
+ eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2, 
+     list(a = format(coef(m)[1], digits = 2), 
+       b = format(coef(m)[2], digits = 2), 
+       r2 = format(summary(m)$r.squared, digits = 3))) 
+ as.character(as.expression(eq));     
+ } 
> t=ggplot(df1, aes(x=val, y=x))+geom_smooth(method=lm) + geom_point() 
> tgen = t + geom_text(x = -10, y = 50, label = eq(df1), parse = TRUE) 
Error in layer(data = data, mapping = mapping, stat = stat, geom = GeomText, : 
    could not find function "eq" 
> tgen = t + geom_text(x = -10, y = 50, label = my_sts(df1), parse = TRUE) 
Warning message: 
In summary.lm(m) : essentially perfect fit: summary may be unreliable 
> print(tgen) 

verwenden bedeuten Scheint gut zu drucken: Beachten Sie, dass x und y Rollen umgekehrt sind, daher ist der Koeffizient die Umkehrung des modellierten Faktors.

enter image description here

Verwandte Themen