функция линейной регрессии, создающая список вместо модели - PullRequest
0 голосов
/ 15 июня 2019

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

Вот код, который я использую lm(Soc_vote ~ Inclusivity + Gini + Un_den, data = general_inclusivity_sweden )

Но вместо обычных коэффициентов заголовок переменной выглядит смешанным с данными следующим образом:

     (Intercept)  Inclusivity0.631  Inclusivity0.681  Inclusivity0.716    Inclusivity0.9  
           35.00             -4.00             -6.74             -4.30              4.90

Кто-нибудь знает, почему это произошло и как это можно исправить?

Ответы [ 2 ]

1 голос
/ 15 июня 2019

Было бы хорошо, если бы вы могли предоставить образец ваших данных, но я предполагаю, что ключевая проблема заключается в том, что числовые данные в Inclusivity сохраняются как фактор. например.,

library(tidyverse)
x <- tibble(incl = as.factor(c(0.631, 0.681, 0.716)), 
                         soc_vote=1:3)
lm(soc_vote ~ incl, x)

Call:
lm(formula = soc_vote ~ incl, data = x)

Coefficients:
(Intercept)    incl0.681    incl0.716  
          1            1            2  

Принимая во внимание, что если вы сначала преобразуете столбец Inclusivity в double, вы получите

y <- x %>% mutate(incl = as.double(as.character(incl)))
lm(soc_vote ~ incl, y)

Call:
lm(formula = soc_vote ~ incl, data = y)

Coefficients:
(Intercept)         incl  
     -13.74        23.29  

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

1 голос
/ 15 июня 2019

То, что вы видите, называется named num (числовой вектор с именами). Вы можете сделать следующее:

Model <-  lm(Soc_vote ~ Inclusivity + Gini + Un_den, data = general_inclusivity_sweden) # Assign the model to an object called Model
summary(Model) # Summary table
Model$coefficients # See only the coefficients as a named numeric vector
Model$coefficients[[1]] # See the first coefficient without name

Если вы хотите все коэффициенты без имен (то есть просто числовой вектор), попробуйте:

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