2012-03-11 19 views
9

Probé la función abline para crear una línea de regresión lineal en un diagrama de dispersión.¿Cómo puedo crear una línea de regresión lineal en un diagrama de dispersión con R?

x= c (1.0325477, 0.6746901, 1.0845737, 1.1123872, 1.1060822, 0.8595918, 0.8512941, 1.0148842, 1.0722369, 0.9019220 , 0.8809147, 1.0358256, 0.9903858, 1.0715174 , 1.1034405, 1.0143966,0.9802365, 0.7177169 , 0.9190783, 0.8408701) 
y= c (0.8550177, 0.8352162 ,1.0236998, 1.1071665, 0.6768144, 0.8449983 ,0.7616483, 0.8259199, 1.1539598, 1.4125006, 1.0511816, 0.9366184, 1.4101268, 1.2937913, 1.4147219 ,1.2943105 ,0.7859749, 0.6689330, 0.6940164, 0.8093392) 
plot(x,y) 
abline(lm(y ~ x)) 
Error in int_abline(a = a, b = b, h = h, v = v, untf = untf, ...) : 
plot.new has not been called yet 

Cualquier sugerencia por favor

+1

hmm, funciona bien para mí – johannes

+1

para mí también - no hay problema? – vaettchen

+2

Esto puede suceder si cierra la ventana de trazado (o dispositivo) entre las llamadas 'plot' y' abline'. –

Respuesta

9

funciona bien para mí también como para el resto. Tratar de cerrar y volver a abrir R.

Si todavía problemático, puede probar:

# put x and y in a data frame 
dat<-data.frame(x=x,y=y) 
attach(dat) 
plot(x,y) 
abline(lm(y ~ x)) 
+0

muchos usuarios con experiencia R desaconsejan 'attach()' y recomiendan usar el argumento 'data' siempre que sea posible (es decir, en' lm', aunque tristemente no está disponible en 'plot') –

+1

@BenBolker -' with() 'es suficiente un sustituto decente para la trama, 'con (dat, plot (y ~ x))' – Chase

+0

@Chase: true. Para los usuarios principiantes, creo que la simplicidad relativa de 'plot (dat $ x, dat $ y)' podría ser mejor (aunque me gusta 'with' y la utilizo con frecuencia). Probablemente es demasiado tarde para solicitar al R-core un argumento de 'datos' en 'plot' ... –

1

plot (x ~ y)

abline (lm (x ~ y))

debería corregir ese código. En MacOs lo hace funcionar.

+0

en realidad, esta respuesta no es demasiado útil: ha invertido las variables de predicción y respuesta, y el código original funciona para todos los demás que lo han intentado de todos modos ... –

0

Primero cree un archivo para mostrar su salida como archivos pdf o svg, entonces el mismo código obviamente ayudará. Para más aclaración

svg("filename1.svg") 
    plot(x ~ y) 
    abline(lm(y ~ x)) 
    dev.off() 
Cuestiones relacionadas