2014-06-11 6 views
9

Wie drucken wir die Gleichung einer Linie auf einem Diagramm?R Druckgleichung der linearen Regression auf dem Diagramm selbst

Ich habe 2 unabhängige Variablen und würde eine Gleichung wie folgt erhalten:

y=mx1+bx2+c 

where x1=cost, x2 =targeting 

ich die am besten passende Linie zeichnen können, aber wie drucke ich die Gleichung auf dem Grundstück?

Vielleicht kann ich nicht die 2 unabhängigen Variablen in einer Gleichung drucken, aber wie mache ich es für sagen y=mx1+c mindestens?

Hier ist mein Code:

fit=lm(Signups ~ cost + targeting) 
plot(cost, Signups, xlab="cost", ylab="Signups", main="Signups") 
abline(lm(Signups ~ cost)) 
+1

1) Wollten Sie die * Werte der Koeffizienten * in der Gleichung oder nur 'y = m x1 + b x2 + c'? 2) Die Linie, die Sie gezeichnet haben (1 Prädiktor), entspricht nicht dem von Ihnen angepassten linearen Modell. Tatsächlich könnte der Koeffizient für die Kostenvariable in der geraden Linie [könnte sich im Vorzeichen unterscheiden] (http://en.wikipedia.org/wiki/Simpson%27s_paradox) zu demjenigen von der multiplen Regression sein. Wenn Sie etwas drucken, das drastisch anders sein könnte, wird das nicht verwirrend sein? –

+3

Duplikate: http://stackoverflow.com/questions/14913109/how-to-specify-equation-for-regression-line-in-gplplot2 (ggplot), http://stackoverflow.com/questions/22970708/plot- quadratische Regression mit Gleichung angezeigt (quadratisch), http://stackoverflow.com/questions/9681765/display-regression-equation-and-r2-for-each-scatter-plot-when-using-facet-wrap (facettierter ggplot), http://stackoverflow.com/questions/12248116/add-text-to-lattice-plot (Gitter) –

Antwort

11

Ich versuchte, die Ausgabe ein wenig zu automatisieren:

fit <- lm(mpg ~ cyl + hp, data = mtcars) 
summary(fit) 
##Coefficients: 
##    Estimate Std. Error t value Pr(>|t|)  
## (Intercept) 36.90833 2.19080 16.847 < 2e-16 *** 
## cyl   -2.26469 0.57589 -3.933 0.00048 *** 
## hp   -0.01912 0.01500 -1.275 0.21253 


plot(mpg ~ cyl, data = mtcars, xlab = "Cylinders", ylab = "Miles per gallon") 
abline(coef(fit)[1:2]) 

## rounded coefficients for better output 
cf <- round(coef(fit), 2) 

## sign check to avoid having plus followed by minus for negative coefficients 
eq <- paste0("mpg = ", cf[1], 
      ifelse(sign(cf[2])==1, " + ", " - "), abs(cf[2]), " cyl ", 
      ifelse(sign(cf[3])==1, " + ", " - "), abs(cf[3]), " hp") 

## printing of the equation 
mtext(eq, 3, line=-2) 

enter image description here

Hoffe, dass es hilft,

alex

3

Sie verwenden ?text. Außerdem sollten Sie nicht abline(lm(Signups ~ cost)) verwenden, da dies ein anderes Modell ist (siehe meine Antwort auf CV hier: Is there a difference between 'controling for' and 'ignoring' other variables in multiple regression). Auf jeden Fall berücksichtigen:

set.seed(1) 
Signups <- rnorm(20) 
cost  <- rnorm(20) 
targeting <- rnorm(20) 
fit  <- lm(Signups ~ cost + targeting) 

summary(fit) 
# ... 
# Coefficients: 
#    Estimate Std. Error t value Pr(>|t|) 
# (Intercept) 0.1494  0.2072 0.721 0.481 
# cost   -0.1516  0.2504 -0.605 0.553 
# targeting  0.2894  0.2695 1.074 0.298 
# ... 

windows();{ 
    plot(cost, Signups, xlab="cost", ylab="Signups", main="Signups") 
    abline(coef(fit)[1:2]) 
    text(-2, -2, adj=c(0,0), labels="Signups = .15 -.15cost + .29targeting") 
} 

enter image description here

Verwandte Themen