Я знаю, как добавить линейную линию тренда, используя функции lm
и abline
, но как добавить другие линии тренда, такие как логарифмические, экспоненциальные и силовые трендовые линии?Как добавить разные линии тренда в R?
17
A
ответ
38
Вот один я подготовил ранее:
# set the margins
tmpmar <- par("mar")
tmpmar[3] <- 0.5
par(mar=tmpmar)
# get underlying plot
x <- 1:10
y <- jitter(x^2)
plot(x, y, pch=20)
# basic straight line of fit
fit <- glm(y~x)
co <- coef(fit)
abline(fit, col="blue", lwd=2)
# exponential
f <- function(x,a,b) {a * exp(b * x)}
fit <- nls(y ~ f(x,a,b), start = c(a=1, b=1))
co <- coef(fit)
curve(f(x, a=co[1], b=co[2]), add = TRUE, col="green", lwd=2)
# logarithmic
f <- function(x,a,b) {a * log(x) + b}
fit <- nls(y ~ f(x,a,b), start = c(a=1, b=1))
co <- coef(fit)
curve(f(x, a=co[1], b=co[2]), add = TRUE, col="orange", lwd=2)
# polynomial
f <- function(x,a,b,d) {(a*x^2) + (b*x) + d}
fit <- nls(y ~ f(x,a,b,d), start = c(a=1, b=1, d=1))
co <- coef(fit)
curve(f(x, a=co[1], b=co[2], d=co[3]), add = TRUE, col="pink", lwd=2)
Добавить описательную легенду:
# legend
legend("topleft",
legend=c("linear","exponential","logarithmic","polynomial"),
col=c("blue","green","orange","pink"),
lwd=2,
)
Результат:
родового и менее длинные руки способа черчения кривые должны просто пройти x
и th е список коэффициентов к функции curve
, как:
curve(do.call(f,c(list(x),coef(fit))),add=TRUE)
17
ggplot2
подход с использованием stat_smooth
, используя одни и те же данные, как thelatemail
DF <- data.frame(x, y)
ggplot(DF, aes(x = x, y = y)) + geom_point() +
stat_smooth(method = 'lm', aes(colour = 'linear'), se = FALSE) +
stat_smooth(method = 'lm', formula = y ~ poly(x,2), aes(colour = 'polynomial'), se= FALSE) +
stat_smooth(method = 'nls', formula = y ~ a * log(x) +b, aes(colour = 'logarithmic'), se = FALSE, start = list(a=1,b=1)) +
stat_smooth(method = 'nls', formula = y ~ a*exp(b *x), aes(colour = 'Exponential'), se = FALSE, start = list(a=1,b=1)) +
theme_bw() +
scale_colour_brewer(name = 'Trendline', palette = 'Set2')
Вы могли бы также соответствовать экспоненциальный линии тренда с использованием glm
с функцией связи в журнале
glm(y~x, data = DF, family = gaussian(link = 'log'))
Для немного удовольствия, вы могли бы использовать theme_excel
из ggthemes
library(ggthemes)
ggplot(DF, aes(x = x, y = y)) + geom_point() +
stat_smooth(method = 'lm', aes(colour = 'linear'), se = FALSE) +
stat_smooth(method = 'lm', formula = y ~ poly(x,2), aes(colour = 'polynomial'), se= FALSE) +
stat_smooth(method = 'nls', formula = y ~ a * log(x) +b, aes(colour = 'logarithmic'), se = FALSE, start = list(a=1,b=1)) +
stat_smooth(method = 'nls', formula = y ~ a*exp(b *x), aes(colour = 'Exponential'), se = FALSE, start = list(a=1,b=1)) +
theme_excel() +
scale_colour_excel(name = 'Trendline', palette = 'Set2')
Смежные вопросы
- 1. Настройка длины линии тренда в R
- 2. Как добавить линию тренда (экспоненциальный) в R?
- 3. Добавить линии тренда на некоторые участки
- 4. Вычисление линейной линии тренда для каждой строки таблицы в R
- 5. Добавление линии тренда к диаграмме рассеяния с использованием R
- 6. Построение нелинейной линии тренда на логарифмическом графике в R
- 7. Добавить будущие даты для графика для линии тренда
- 8. 'toolText' как метка для линии тренда FushionChart
- 9. Как добавить разные линии для граней
- 10. Amcharts: Как получить наклон линии тренда?
- 11. Почему существуют три линии тренда в таблице
- 12. Есть ли в Highcharts функция «линии тренда»?
- 13. Как написать функцию тренда SLOBODA в R
- 14. Как добавить несколько линий тренда pandas
- 15. Как добавить линию тренда к гистограмме?
- 16. Невозможно добавить линейную линию тренда на баррель в R
- 17. расчетный уклон для линии тренда линии в Pandas
- 18. Как установить две разные линии в одной модели в R?
- 19. присваивать разные веса набору линий тренда в c
- 20. Создание линии тренда из набора данных SQL
- 21. QlikView - добавление значения к средней линии тренда
- 22. Добавление линии тренда в столбчатую диаграмму в службах Reporting Services
- 23. Excel Линия тренда (СКАТ()) и CORREL() дает разные коэффициенты
- 24. Получение коэффициентов логарифмической линии тренда, EXCEL
- 25. Линии тренда (регрессия, аппроксимация кривой) java library
- 26. Google графики - линии тренда на диаграмме столбца
- 27. Как построить линию тренда на графике в R
- 28. Как показать линии тренда в Visual Web Developer
- 29. Создание линии тренда в логарифмической шкале рассеяния шкалы
- 30. Построение логистической поверхности тренда в R
Это очень полезно. Как я могу использовать этот ответ с осью X x? – pomarc