Как получить (единичные) значения прогноза и итоги линейной регрессии из 2 кадров данных в R - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь получить прогнозные значения для одномерного анализа для этих фреймов данных:

X Переменные

structure(list(GDP.SC = c(154698, 154698, 154698, 154698, 154698, 
154698, 154698, 154698, 154698, 154698), GDP.SC1 = c(NA, 154698, 
154698, 154698, 154698, 154698, 154698, 154698, 154698, 154698
), GDP.SC2 = c(NA, NA, 154698, 154698, 154698, 154698, 154698, 
154698, 154698, 154698), GDP.SC3 = c(NA, NA, NA, 154698, 154698, 
154698, 154698, 154698, 154698, 154698), GDP.SC4 = c(NA, NA, 
NA, NA, 154698, 154698, 154698, 154698, 154698, 154698), CivilianLaborForce.SC = c(1938335L, 
1941025L, 1944162L, 1947433L, 1950188L, 1952687L, 1956061L, 1960701L, 
1966380L, 1972351L), CivilianLaborForce.SC1 = c(NA, 1938335L, 
1941025L, 1944162L, 1947433L, 1950188L, 1952687L, 1956061L, 1960701L, 
1966380L), CivilianLaborForce.SC2 = c(NA, NA, 1938335L, 1941025L, 
1944162L, 1947433L, 1950188L, 1952687L, 1956061L, 1960701L), 
    CivilianLaborForce.SC3 = c(NA, NA, NA, 1938335L, 1941025L, 
    1944162L, 1947433L, 1950188L, 1952687L, 1956061L), CivilianLaborForce.SC4 = c(NA, 
    NA, NA, NA, 1938335L, 1941025L, 1944162L, 1947433L, 1950188L, 
    1952687L)), row.names = c(NA, 10L), class = "data.frame")

Y Переменные:

structure(list(CommercialB = c(NA, NA, NA, NA, NA, NA, 0.004, 
0.012, 0.007, NA), CommercialNOO = c(NA, NA, NA, NA, NA, NA, 
0.006, 0.027, NA, NA), CommercialIOO = c(NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_), ConsumerO = c(0.011, 0.011, 0.021, 0.021, 0.027, 0.032, 
0.027, 0.027, 0.025, 0.027), ConsumerRE = c(NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_), Heloc = c(NA, NA, NA, NA, 0.005, 0.004, 0.004, 0.004, 
0.004, NA)), row.names = c(NA, 10L), class = "data.frame")

Метод получения сводки для одномерной линейной регрессии:

fit_sum1 <- function(yvar, xdf) {
  # ITERATE THROUGH EACH COLUMN OF x
  df_list <- lapply(seq_along(xdf), function(i) {
    n <- lm(yvar ~ x[,i]) #Regression
    m <- coef(summary(n))       #Summary for Model 
    data.frame(
      Variable = names(x)[i],            # print variable name
      Intercept = m[1,1],   # intercept
      Coefficient = m[2,1], # coefficient
      P_val = m[2,4],      # Pvalue
      Intuitive = ifelse(m[2,1]>0,"Yes","No"), #Intuitive YN
      Significance  = ifelse(m[2,4]<.15,"Yes","-"), #Significance YN
      Prediction = predict(n,type = "response")  #Predict Function####
    )
  })
  return(do.call(rbind, df_list))
}
y.df <- lapply(y, function(col) fit_sum1(col, x)) #Iterate through Y df

У меня возникли проблемы с пониманием, почему функция предсказания повторяет переменные x в этом резюме.

> head(y.df$CommercialB)
   Variable  Intercept   Coefficient        P_val Intuitive Significance Prediction
7    GDP.SC 0.04283477 -1.944471e-07 0.0004347055        No          Yes 0.01275419
8    GDP.SC 0.04283477 -1.944471e-07 0.0004347055        No          Yes 0.01275419
9    GDP.SC 0.04283477 -1.944471e-07 0.0004347055        No          Yes 0.01275419
11   GDP.SC 0.04283477 -1.944471e-07 0.0004347055        No          Yes 0.01169632
12   GDP.SC 0.04283477 -1.944471e-07 0.0004347055        No          Yes 0.01169632
13   GDP.SC 0.04283477 -1.944471e-07 0.0004347055        No          Yes 0.01169632
> 

Я знаю, что функция предсказания вернется вектор, но я думаю, что мне не хватает чего-то о том, как именно работает функция. Что касается примера, существует ли более эффективный способ получения прогнозов из модели для отдельных значений, передаваемых из каждого фрейма данных? Моя цель - получить такой результат (со значениями прогноза в конце):

> head(y.df$CommercialB)   ##### function without predict  ########
               Variable  Intercept   Coefficient        P_val Intuitive Significance
1                GDP.SC 0.04283477 -1.944471e-07 0.0004347055        No          Yes
2               GDP.SC1 0.04243394 -1.924564e-07 0.0005505297        No          Yes
3               GDP.SC2 0.04197888 -1.901651e-07 0.0006979945        No          Yes
4               GDP.SC3 0.04168221 -1.887271e-07 0.0007952792        No          Yes
5               GDP.SC4 0.04199046 -1.907528e-07 0.0008185224        No          Yes
6 CivilianLaborForce.SC 0.04348104 -1.611569e-08 0.0285751028        No          Yes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...