Reputation: 153
I am new to R and I'm working on a project, where we have to do some experiments with generating linear regression models.
Here is my code:
# 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)
But I get an error:
Error in model.frame.default(formula = y1 ~ beta1 * sprem1 + beta2 * sprem2 + : variable lengths differ (found for 'beta1')
Where is the problem?
Any help would be appreciated.
Upvotes: 0
Views: 294
Reputation: 1037
In the formula, *
is interpreted as the interaction between each beta
and the terms from df
. This interaction is akin to an element-wise product, but the beta
are scalar, whereas the sprem
are vectors... so their length differ.
It's hard to tell what you want to do, but you're probably looking for something like this:
fit.lm <- lm(formula = y1 ~ I(beta1 * sprem1) + I(beta2 * sprem2) + I(beta3 * sprem3) + I(beta4 * sprem4) + I(beta5 * sprem5), data = df)
Upvotes: 2