Я хочу умножить коэффициенты регрессии на фактические переменные для каждого наблюдения.Без факторов я могу сделать это путем умножения матрицы переменных по элементам на вектор коэффициентов
v_coef <- as.matrix(vars) %*% as.matrix(coef)
Однако проблема, с которой я сталкиваюсь, заключается в том, что одна из моих переменных является фактором.Следовательно, регрессия возвращает несколько коэффициентов, связанных с фиктивными переменными (по одному на каждый год, за исключением одного года).Поэтому приведенная выше строка кода больше не работает, так как несколько коэффициентов связаны с одним и тем же столбцом в матрице переменных.
### Working example
# Make up dataframe
df <- data.frame(matrix(rnorm(6*1000, 1, .5), ncol=6))
# Make up some years (3)
df$year <- c(rep(1,333),rep(2,333),rep(3,334))
# Regress something with years as factor
model <- lm(X1~X2+X3+X4+X5+X6+factor(year),data=df)
# This does not work because years receive 3 coefficients for 1 column
m_coef <- as.matrix(df) %*% as.matrix(model$coefficients)
Я вижу два решения, однако не могу понять, как их реализовать.Либо я разделил столбец коэффициента на несколько столбцов с 0 для всех, кроме соответствующего года и 1 для наблюдений, которые попадают в этот год.В качестве альтернативы я меняю матрицу умножения и назначаю коэффициенты разным значениям коэффициента