Проблемы с пакетом revoScaleR в R - Логистическая регрессия / GLM - PullRequest
0 голосов
/ 29 ноября 2018

Итак ... Я использую Microsoft R Client для подгонки некоторых моделей.Это дает мне доступ к пакету revoScaleR (ранее создан Revolution Analytics).Это дает доступ к некоторым альтернативным алгоритмам подбора модели к встроенной версии R.Я не использовал их раньше, поэтому в качестве быстрого начального теста я взял небольшой набор данных и использовал функции R (lm и glm) и функции revoScaleR (rxGlm и rxLogit), чтобы соответствовать ряду (тривиальных) моделей, которыевсе должны давать один и тот же ответ ... но они не дают.

### 1. lm - gives correct answer

Propensity.Model <- lm(Large_Claim_Proportion ~ 1,
                       data = Data.Set.NZ.Claim.Version,
                       weights = NZ.Claim.Count)

Propensity.Model$fitted.values[1] # gives correct answer of 0.01837672



### 2. glm (logistic) - gives correct answer 

Propensity.Model <- glm(Large_Claim_Proportion ~ 1,
                        data = Data.Set.NZ.Claim.Version,
                        weights = NZ.Claim.Count,
                        family = binomial(link = "logit"))

Propensity.Model$fitted.values[1] # gives correct answer is 0.01837672



### 3. rxLogit - giving wrong answer

Propensity.Model <- rxLogit(Large_Claim_Proportion ~ 1,
                            data = Data.Set.NZ.Claim.Version,
                            fweights = "NZ.Claim.Count")

Predicted_Values <- rxPredict(modelObject = Propensity.Model,
                              data = Data.Set.NZ.Claim.Version)

Predicted_Values[1,] # gives wrong answer of 0.0165901



### 4. rxGlm (logistic) (alternative to rxLogit) - giving wrong answer

Propensity.Model <- rxGlm(Large_Claim_Proportion ~ 1,
                          data = Data.Set.NZ.Claim.Version,
                          fweights = "NZ.Claim.Count",
                          family = binomial(link = "logit"))

Predicted_Values <- rxPredict(modelObject = Propensity.Model,
                              data = Data.Set.NZ.Claim.Version)

Predicted_Values[1,] # gives wrong answer of 0.0165901



### 5. rxGlm (log-binomial) - giving correct answer (although log-binomial isn't a natural pairing)

Propensity.Model <- rxGlm(Large_Claim_Proportion ~ 1,
                          data = Data.Set.NZ.Claim.Version,
                          fweights = "NZ.Claim.Count",
                          family = binomial(link = "log"))

Predicted_Values <- rxPredict(modelObject = Propensity.Model,
                              data = Data.Set.NZ.Claim.Version)

Predicted_Values[1,] # gives correct answer of 0.01837672

Элемент Large_Claim_Proportion всегда находится в диапазоне [0, 1], поэтому должен подходить в качестве зависимой переменной в модели логистической регрессииfit.

Если кто-нибудь, читающий это, понимает, как работают эти функции и что могло пойти не так, я был бы очень признателен за совет.Я хорошо приспособлен для подгонки GLM в других контекстах, но я относительно новичок в R - поэтому я подозреваю, что допустил какую-то элементарную ошибку кодирования новобранца.

Спасибо.

...