francosy
francosy

Reputation: 153

R: variable lengths differ error when using lm

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

Answers (1)

meriops
meriops

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

Related Questions