Синтаксис биномиальной формулы в geom_smooth - PullRequest
1 голос
/ 25 октября 2019

Я вычислил биномиальную регрессию в R:

Call:
glm(formula = cbind(success, failure) ~ x * f, family = "binomial", 
    data = tb1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-3.6195  -0.9399  -0.0493   0.5698   2.0677  

Coefficients:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept) -2.3170182  0.0622600 -37.215  < 2e-16 ***
x            0.0138201  0.0009892  13.972  < 2e-16 ***
fTRUE        0.6466238  0.1976115   3.272  0.00107 ** 
x:fTRUE     -0.0035741  0.0032587  -1.097  0.27273    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 479.88  on 147  degrees of freedom
Residual deviance: 201.53  on 144  degrees of freedom
  (7 observations deleted due to missingness)
AIC: 870.72

Number of Fisher Scoring iterations: 4    

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

ggplot(tb1, aes(x, success/(success+failure), colour=f)) +
  geom_point() +
  geom_smooth(method="lm")

Linear Regression

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

ggplot(tb1, aes(x, success/(success+failure), colour=f)) +
  geom_point() +
  geom_smooth(
    method="glm",
    method.args=list(family="binomial"),
  )

, я получаю этот график:

Suspicious binomial regression

, что кажется неправильным. Стандартные ошибки не должны быть такими большими. Я подумал, что нужно явно указать формулу в geom_smooth, но я не могу понять синтаксис правильно. Когда я пытаюсь

ggplot(tb1, aes(x, success/(success+failure), colour=f)) +
  geom_point() +
  geom_smooth(
    method="glm",
    method.args=list(
      family="binomial",
      formula = cbind(success, failure) ~ x
    )
  )

, я получаю

Предупреждающее сообщение:
Ошибка вычисления в stat_smooth():
объект 'success' не найден

Как правильно указать формулу?

1 Ответ

1 голос
/ 28 октября 2019

Как и в случае биномиальной регрессии, формула в geom_smooth должна иметь матрицу успехов и неудач в качестве ответа. Соответствующие переменные должны быть определены в эстетике:

ggplot(tb1, aes(x, y=success/(success+failure), colour=f, succ=success, fail=failure)) +
  geom_point() +
  geom_smooth(
    method="glm",
    method.args=list(family="binomial"),
    formula = cbind(succ, fail) ~ x
  )

Теперь это работает:

Correct binomial smoothing

Благодаря NelsonGon за указание на это.

...