R:使用 lm 时可变长度不同错误

R: variable lengths differ error when using lm

我是 R 的新手,我正在做一个项目,我们必须做一些生成线性回归模型的实验。

这是我的代码:

# regression coefficients
beta1 = 1
beta2 = 0
beta3 = 5
beta4 = 1
beta5 = 1

# generated data
df <- data.frame(y1 = rnorm(n, mean = 50, sd = 1),
                sprem1 = rnorm(n, mean = 0, sd = 1),
                sprem2 = rnorm(n, mean = 10, sd = 2),
                sprem3 = rnorm(n, mean = 10, sd = 2),
                sprem4 = rnorm(n, mean = 20, sd = 2),
                sprem5 = rnorm(n, mean = 20, sd = 1))
fit.lm <- lm(formula = y1 ~ beta1 * sprem1 + beta2 * sprem2 + beta3 * sprem3 + beta4 * sprem4 + beta5 * sprem5, data = df)

但是我得到一个错误:

Error in model.frame.default(formula = y1 ~ beta1 * sprem1 + beta2 * sprem2 + : variable lengths differ (found for 'beta1')

问题出在哪里?

如有任何帮助,我们将不胜感激。

在公式中,* 被解释为每个 beta 与来自 df 的项之间的交互作用。这种相互作用类似于逐元素乘积,但 beta 是标量,而 sprem 是向量……因此它们的长度不同。 很难说出你想做什么,但你可能正在寻找这样的东西:

fit.lm <- lm(formula = y1 ~ I(beta1 * sprem1) + I(beta2 * sprem2) + I(beta3 * sprem3) + I(beta4 * sprem4) + I(beta5 * sprem5), data = df)