Биноминальная регрессия - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь разработать биномиальную модель в R.

Я хочу использовать формулу, которая выглядит следующим образом: VAL = X0 + b1 * X1 + b2 * X2

Где X0, X1 и X2 - переменные в моем фрейме данных, а b1 и b2 - коэффициенты, которые я хочу разработать. Я хочу, чтобы целевое значение Y было TRUE / 1, если эта формула дает VAL> 0, и FALSE / 0, если оно дает VAL <0. </p>

Пример данных с b1 и b2, установленными на 1:
Target X0 X1 X2 VAL Result
1 86 -54 17 49 1
0 0 -54 17 -37 0
1 40 -15 23 48 1
0 50 -20 -25 5 1

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

Причина, по которой мне нужно X0 в модели, заключается в том, что если X1 и X2 равны для двух наблюдений, которые имеют разные значения X0 (как в первых 2 наблюдениях), я хочу отразить это в моей формуле. X0 одного наблюдения может привести к тому, что VAL будет отрицательным, а X0 других наблюдений может сделать VAL положительным, но это не будет отражено, если X0 будет полностью исключен из модели. Также обратите внимание на последнее наблюдение, в котором мне нужно было бы либо увеличить b1, либо b2, чтобы VAL был отрицательным, а результат равен 0 (который модель не увидит, не увидев X0).

В настоящее время я использую формулу, которая выглядит как glm ("Y ~ X0 + X1 + X2", family = binomial (link = "logit")), но эта модель выдает коэффициент для X0. Как мне разработать модель, заставляющую X0 не иметь коэффициента?

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

В качестве обновления я искал функцию offset (). В этом случае я использовал смещение (X0) в качестве дополнительного предиктора для моей модели.

0 голосов
/ 09 ноября 2018

Похоже, что вы хотите, чтобы коэффициент для X0 был нулевым.Если вы не можете изменить формулу (опустить X0), вы можете изменить данные.Вот пример:

n = 1000
df = data.frame('x1'=rnorm(n), 'x2'=rnorm(n))
df0 = df
df0[,2] = 0

y = 0.5 + 1.5*df[,1] - 1.0*df[,2] + rnorm(n, 0, 0.1)

mod1 = lm(y ~ x1, data = df)
mod2 = lm(y ~ x1 + x2, data = df)
mod3 = lm(y ~ x1 + x2, data = df0)

Звучит так, будто mod1 - это то, что вы хотите, но, поскольку вы не можете изменить формулу, вы застряли с mod2 или mod3.mod2 не будет работать, так как это даст оценку для x2.mod3 совпадает с mod1, за исключением того, что коэффициент для x2 будет NA, но точки пересечения и x1 будут иметь одинаковые коэффициенты.

Если коэффициент для x2 будетNA сравнимо с нулем.Прогнозы mod1 и mod3 будут такими же, но mod3 выдает предупреждение.

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