Как построить все R квадратов из списка моделей на одном графике в R? - PullRequest
1 голос
/ 29 мая 2019

Это пример дф.Однако мой оригинальный df намного больше.

ind1 <- rnorm(99)
ind2 <- rnorm(99)
ind3 <- rnorm(99)
dep <- rnorm(99, mean=ind1)
df <- data.frame(dep, ind1, ind2, ind3)

Следующий код запускает 3 модели для каждой переменной в df.

ind <- c("ind1", "ind2", "ind3")
fmt <- c("dep ~ %s", 
         "dep ~ poly(%s, 2, raw=TRUE)", 
         "dep ~ poly(%s, 3, raw=TRUE)")
fo.strings <- c(outer(fmt, ind, sprintf))
outputs <- sapply(fo.strings, lm, data = df, simplify = FALSE)

Выходными данными является список моделей (всего 9 списков).

Я хочу построить Rsquare всех моделей в списке на одном графике и упорядочить их по возрастанию, чтобы сравнить их.Это довольно сложно, когда они в списке.Был бы очень признателен, если кто-то поможет

Заранее спасибо!

1 Ответ

2 голосов
/ 29 мая 2019

Вы извлекаете R в квадрате с помощью summary(model)$r.squared, и вы можете применить эту функцию к списку.Я буду использовать sapply здесь, чтобы на выходе был именованный вектор.Тогда есть много способов построить его, вы можете использовать базовые функции графика R или ggplot, но самый простой - это lattice::barchart:

rsq <- sapply(outputs, function(mod) summary(mod)$r.squared)
rsq <- sort(rsq)
lattice::barchart(rsq)
...