Я пытаюсь получить прогнозные значения для одномерного анализа для этих фреймов данных:
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