2012-03-11 3 views
9

Ho provato la funzione ablina per creare una linea di regressione lineare su un grafico a dispersione.Come posso creare una linea di regressione lineare su uno scatterplot 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 

Tutti i suggerimenti soddisfanno

+1

hmm, funziona bene per me – johannes

+1

anche per me - nessun problema? – vaettchen

+2

Ciò può accadere se si chiude la finestra (o il dispositivo) del grafico tra le chiamate 'plot' e' abline'. –

risposta

9

funziona bene anche per me come per il resto. Prova a chiudere e riaprire R.

Se ancora problematico, può provare:

# 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

molti utenti esperti non raccomandano 'attach()' e raccomandano l'uso dell'argomento 'data' laddove possibile (cioè in' lm', anche se purtroppo non disponibile in 'trama') –

+1

@BenBolker -' with() 'è sufficiente un surrogato decente per la trama, 'con (dat, plot (y ~ x))' – Chase

+0

@Chase: true. Per gli utenti principianti, penso che la relativa semplicità di 'plot (dat $ x, dat $ y)' potrebbe essere migliore (anche se mi piace 'with' e lo uso spesso). Probabilmente troppo tardi per presentare petizione a R-core per un argomento 'data' in' plot' ... –

1

plot (x ~ y)

abline (lm (x ~ y))

dovrebbe risolvere quel codice. Su MacO lo fa funzionare.

+0

in realtà, questa risposta non è troppo utile - hai invertito il predittore e le variabili di risposta, e il codice originale funziona per tutti gli altri che lo hanno provato comunque ... –

0

Prima di creare un file per mostrare l'output come file pdf o svg, lo stesso codice sarà ovviamente di aiuto. Per ulteriori chiarimenti

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