Линейная функция регрессии в ggplot - PullRequest
0 голосов
/ 06 мая 2020

Итак, у меня есть набор данных, в котором есть одна переменная «Дата», которая идет «1, 2, 3, ..., 182». Затем у меня есть другая переменная, которая увеличивается либо на 1, либо на 0. Таким образом, она выглядит как «0, 1, 2, 2, 2, 3, 4, ... et c до 95.

I выполнили регрессию, и все работает нормально. Но я не могу получить линейную функцию или значение R-квадрат. Обычно вы используете что-то вроде

lm_eq <- lm(var1 ~var2 + var3)
summary(lm_eq)

, и вы получите все данные. Но я использовал ggplot для своей регрессии как таковой:

t1 = ggplot() +
   geom_line(data = odds, aes(x = Date, y = RorderOT1), colour="red") +
   geom_smooth(data = odds, aes(x = Date, y = RorderOT1), colour="red") +
   xlab('Match points') +
   ylab('Number of outcomes')
print(t1)
summary(t1)

Но здесь сводная функция не дает мне линейную функцию, значение R-квадрата или какие-либо другие результаты вообще.

Я попытался осмотреться, но все ответы касаются того, как отобразить результаты в графике. Я не хочу этого, мне нужны только результаты, которые вы обычно получаете, когда выполняете нормальную регрессию в R. Я также пробовал используя обычное кодирование, но эта регрессия, похоже, не соответствует тому, что делает для меня ggplot.

Итак, есть ли какой-нибудь простой способ просто получить результаты, как обычно, или мне нужно указать что-то в код?

1 Ответ

1 голос
/ 06 мая 2020

Вы говорите, что использовали ggplot для своей регрессии, но вы этого не сделали. Вы использовали ggplot, чтобы построить линию регрессии по вашим данным.

Да, внутренне ggplot должен будет выполнить регрессию для генерации строки, но его задача не в том, чтобы возвращать объект модели, который вы можете использовать для математического описания ваших результатов. Его задача - провести линию в нужном месте. То, что вы видите, когда создаете summary ggplot, - это сводка всего множества, многих элементов, которые go используются для создания полностью настраиваемого графика. Линия регрессии - это лишь небольшая часть этого, и не следует ожидать, что объект ggplot предоставит вам все функции правильной модели линейной регрессии.

Вы уже сами ответили на вопрос. Вам нужно сделать отдельную регрессию.

Сначала я загружу ggplot и создам воспроизводимые поддельные данные, которые должны точно соответствовать вашим:

library(ggplot2)

set.seed(69)
odds <- data.frame(Date = 1:182, RorderOT1 = cumsum(rbinom(182, 1, 0.5)))

Затем мы создаем график. Обратите внимание: если вам нужна прямая линия для регрессии, вам необходимо указать method = "lm" в geom_smooth:

ggplot(data = odds) +
   geom_line(aes(x = Date, y = RorderOT1), colour="red") +
   geom_smooth(method = "lm", aes(x = Date, y = RorderOT1), colour="red") +
   xlab('Match points') +
   ylab('Number of outcomes')

Теперь вы можете выполнять регрессию отдельно:


my_model <- lm(RorderOT1 ~ Date, data = odds)
summary(my_model)
#> 
#> Call:
#> lm(formula = RorderOT1 ~ Date, data = odds)
#> 
#> Residuals:
#>     Min      1Q  Median      3Q     Max 
#> -4.3970 -1.9570  0.1362  1.9126  3.6045 
#> 
#> Coefficients:
#>              Estimate Std. Error t value Pr(>|t|)    
#> (Intercept) -1.610528   0.321253  -5.013 1.27e-06 ***
#> Date         0.514329   0.003045 168.924  < 2e-16 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 2.158 on 180 degrees of freedom
#> Multiple R-squared:  0.9937, Adjusted R-squared:  0.9937 
#> F-statistic: 2.854e+04 on 1 and 180 DF,  p-value: < 2.2e-16

Теперь вы можете изучить всю необходимую информацию о регрессии, подключить ее к функции predict, сравнить соответствие с другими моделями, увидеть ее ковариационную матрицу и т. Д. c. потому что это объект модели.

Создано 06.05.2020 пакетом REPEX (v0.3.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...