R: Как определить ошибку в двумерной линейной регрессии в R - PullRequest
0 голосов
/ 08 апреля 2020

Я новичок в линейной регрессии. Я запускаю простую линейную регрессию, используя две переменные с lm. Проблема в том, что я получаю разные результаты. Я дважды выполнил кодирование, чтобы увидеть, совпадает ли вывод модели. Это не значит, что я допустил ошибку в одной из попыток.

Вывод в моей первой попытке показывает 12 элементов в обзоре данных на вкладке среды. Вывод во второй попытке показывает 14 элементов в обзоре данных на вкладке среды.

Как узнать, какой вывод является правильным? Является ли это первой попыткой, поскольку значения DV равны 1-7, тогда как во второй попытке DV также включает значения для -1, то есть неправильные, поскольку это нельзя включить для переменной уровня интервала?

Как мне go о выявлении ошибки? Я увидел разницу в элементах в обзоре данных и начал с рассмотрения различий. Тем не менее, я ничего не вижу, но предполагаю, что это связано с упомянутыми выше значениями -1 и -999. Это хорошее место для начала? Есть ли другие способы лучше?

Большое спасибо за помощь в понимании!

Вот код моей первой попытки:

reg <-lm(immig.view~edu.degree.level,df1)
> reg

    Call:
    lm(formula = immig.view ~ edu.degree.level, data = df1)

    Coefficients:
     (Intercept)  edu.degree.level  
           4.1734            0.3464  

> dput(head(df1,10))
structure(list(edu.degree.level = c(1L, 0L, 1L, 1L, 0L, 1L, 1L, 
1L, 1L, 0L), immig.view = structure(c(7, 4, 5, 1, 7, 5, 7, 1, 
3, 1), label = "J1 Do you think immigration is good or bad for Britain's economy?", labels =              c(`Not stated` = -999, 
   `Don`t know` = -1, `1 Bad for economy` = 1, `2` = 2, `3` = 3, 
    `4` = 4, `5` = 5, `6` = 6, `7 Good for economy` = 7), class = "haven_labelled")), row.names        = c(NA, 
10L), class = "data.frame")

Вот код моего вторая попытка:

> reg <-lm(immig.view~edu.degree.level,df1)
> reg

Call:
lm(formula = immig.view ~ edu.degree.level, data = df1)

Coefficients:
                      (Intercept)  edu.degree.levelwithoutdegree  
                           4.5198                        -0.3431  

    > dput(head(df1,10))
    structure(list(edu.degree.level = structure(c(1L, 2L, 1L, 1L,  
    2L, 1L, 1L, 1L, 1L, 2L), .Label = c("withdegree", "withoutdegree"
    ), class = "factor"), immig.view = structure(c(7, 4, 5, 1, 7, 
    5, 7, 1, 3, 1), label = "J1 Do you think immigration is good or bad for Britain's    economy?",   labels = c(`Not stated` = -999, 
    `Don`t know` = -1, `1 Bad for economy` = 1, `2` = 2, `3` = 3, 
    `4` = 4, `5` = 5, `6` = 6, `7 Good for economy` = 7), class = "haven_labelled")), row.names =  c(NA, 
10L), class = "data.frame")

Еще раз спасибо.

1 Ответ

1 голос
/ 08 апреля 2020

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

Причина этого заключается в том, что данные, на которых вы выполняете свои линейные регрессии, являются разные для каждой попытки.

Данные об образовании в первой попытке:

edu.degree.level = c(1L, 0L, 1L, 1L, 0L, 1L, 1L, 
1L, 1L, 0L)

Данные об образовании во второй попытке

   edu.degree.level = structure(c(1L, 2L, 1L, 1L,  
        2L, 1L, 1L, 1L, 1L, 2L)

Тем не менее, ответы (immig.view) являются то же самое.

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

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