2012-10-30 2 views
1

У меня есть данные в виде:Как добавить среднее значение для рассеивания в R?

Num Percent 
5 9.44 
4 19.7 
4 10.64 
4 10.81 
4 10.97 
4 11.35 
3 13.18 
3 24.54 
3 24.99 
3 12.95 
3 13.17 
3 24.29 
3 13.81 
3 13.93 
3 27.87 
3 13.26 
2 41.41 
2 34.19 
2 41.6 
2 19.31 
2 34.4 
2 38.72 
2 18.16 
2 36.28 
2 18.95 
2 18.49 

Я хотел бы построить данные таким образом, что, наряду с сюжетом «пит» (х) и «процента» (у), то среднее в каждой точке оси x (2,3,4,5) добавляется к графику и строится линия регрессии на основе среднего ряда.

+1

Смотрите метод здесь: http://stackoverflow.com/a/2493010/269476 – James

ответ

1

Вызов ваш кадр данных DF

MeansByNum <- tapply(DF$Percent, DF$Num, mean) #Create an array of means by Num 
NewDF <- data.frame(cbind(Num = as.numeric(as.vector(names(MeansByNum))), 
          Percent = as.numeric(MeansByNum))) 
plot(Percent~Num, DF) 
points(NewDF$Num, NewDF$Percent, col="red") 
abline(lm(Percent~Num, NewDF)) 
+0

спасибо! Есть ли еще одна функция, кроме abline(), которую я могу использовать? abline() рисует прямую линию, и я хотел бы нарисовать более подходящую линию регрессии, а также, возможно, отобразить уравнение линии на диаграмме. – userOfLife

+0

'LM <- lm (Percent ~ as.vector (Num^n), DF)' вы получите модель. 'plot (function (x) coef (LM) [1] + coef (LM) [2] * x^n, MIN, MAX, add = TRUE)' будет рисовать линию. 'legend (legend = round (coef (LM), цифры = 3), x =" topleft ")' будет отображать коэффициенты, но не формулу. –

+0

@ user1786672, когда вы говорите «лучшая линия регрессии», обратите внимание, что строка, в которой он вписывается в этот код *, является линией регрессии *. Как бы вы сделали лучшую линию регрессии? Вы хотите попросить кривую? Или вы просите взвешенную линию? –

Смежные вопросы