📖 Scenario: You are a data analyst at a small company. You want to understand how advertising spending affects sales. You have data on advertising budgets and sales for several months.
🎯 Goal: Build a simple linear regression model using lm in R to predict sales based on advertising spending.
📋 What You'll Learn
Create a data frame with advertising and sales data
Create a variable for the formula to use in the model
Use the lm function to build the linear regression model
Print the summary of the model to see the results
💡 Why This Matters
🌍 Real World
Linear regression is used in business to understand relationships between variables, like advertising spend and sales.
💼 Career
Data analysts and data scientists use linear regression to build predictive models and make data-driven decisions.
Progress0 / 4 steps
1
Create the data frame
Create a data frame called ad_data with two columns: advertising and sales. Use these exact values: advertising = c(10, 20, 30, 40, 50), sales = c(15, 25, 35, 45, 55).
R Programming
Hint
Use data.frame() to create the data frame with the exact column names and values.
2
Create the formula variable
Create a variable called model_formula that stores the formula sales ~ advertising.
R Programming
Hint
Use the tilde ~ to create the formula for the model.
3
Build the linear regression model
Use the lm function to create a linear model called model using model_formula and the data frame ad_data.
R Programming
Hint
Use lm(formula, data = ...) to build the model.
4
Print the model summary
Print the summary of the linear model model using the summary() function.
R Programming
Hint
Use print(summary(model)) to see the details of the regression.
Practice
(1/5)
1. What does the lm() function in R do?
easy
A. Fits a linear regression model to predict a variable
B. Creates a plot of data points
C. Calculates the mean of a numeric vector
D. Performs a t-test between two groups
Solution
Step 1: Understand the purpose of lm() and compare options
The lm() function is used to fit linear models, which means it finds a line that best predicts one variable from others. Options A, B, and D describe other functions or analyses, not linear regression modeling.
Final Answer:
Fits a linear regression model to predict a variable -> Option A
Quick Check:
lm() fits linear regression [OK]
Hint: Remember: lm() stands for linear model fitting [OK]
Common Mistakes:
Confusing lm() with plotting functions
Thinking lm() calculates summary statistics only
Mixing lm() with hypothesis testing functions
2. Which of the following is the correct syntax to fit a linear model predicting y from x in R?
easy
A. model <- lm(y ~ x, data = mydata)
B. model <- lm(x ~ y, data = mydata)
C. model <- lm(y, x, data = mydata)
D. model <- lm(data = mydata, y = x)
Solution
Step 1: Recall the formula syntax for lm() and check options
The correct syntax uses lm(response ~ predictor, data = dataset). Here, y is the response and x the predictor. model <- lm(y ~ x, data = mydata) matches. model <- lm(x ~ y, data = mydata) reverses response and predictor. model <- lm(y, x, data = mydata) uses wrong argument order. model <- lm(data = mydata, y = x) uses = instead of ~.
Final Answer:
model <- lm(y ~ x, data = mydata) -> Option A
Quick Check:
lm(response ~ predictor, data) [OK]
Hint: Formula is always response ~ predictor in lm() [OK]
Common Mistakes:
Swapping response and predictor variables
Passing variables without formula syntax
Misordering arguments in lm()
3. What will be the output of this R code?
data <- data.frame(x = 1:5, y = c(2, 4, 6, 8, 10))
model <- lm(y ~ x, data = data)
coef(model)
medium
A. Intercept = 0, Slope = 1
B. Intercept = 2, Slope = 1
C. Intercept = 1, Slope = 2
D. Intercept = 0, Slope = 2
Solution
Step 1: Analyze data and model fit
The data has x = 1 to 5 and y = 2,4,6,8,10 which is exactly y = 2*x. Since y = 2*x perfectly, intercept is 0 and slope is 2.
Final Answer:
Intercept = 0, Slope = 2 -> Option D
Quick Check:
y = 2*x means intercept 0, slope 2 [OK]
Hint: Check if y is exactly a multiple of x for slope [OK]
Common Mistakes:
Assuming intercept is 1 by default
Mixing up slope and intercept values
Not checking data pattern before fitting
4. Identify the error in this R code for linear regression:
data <- data.frame(x = 1:4, y = c(3, 6, 9, 12))
model <- lm(y = x, data = data)
summary(model)
medium
A. Missing library call for lm()
B. Incorrect formula syntax in lm()
C. summary() cannot be used on lm objects
D. Data frame creation is wrong
Solution
Step 1: Check lm() call and verify other code
The lm() function requires a formula like response ~ predictor. Here, y = x is incorrect syntax. Data frame creation is correct. summary() works on lm objects. lm() is base R, no library needed.
Final Answer:
Incorrect formula syntax in lm() -> Option B
Quick Check:
lm() needs formula, not y = x [OK]
Hint: lm() needs formula like y ~ x, not y = x [OK]
Common Mistakes:
Using = instead of ~ in lm() formula
Assuming summary() is not for lm objects
Thinking lm() requires extra libraries
5. You have a dataset with variables height and weight. You want to predict weight from height using linear regression. After fitting model <- lm(weight ~ height, data = df), the summary shows a very low R-squared value. What is the best next step?
hard
A. Remove the intercept term to force a better fit
B. Use the model as is because R-squared is not important
C. Try adding more predictor variables to improve the model
D. Switch to a t-test instead of regression
Solution
Step 1: Interpret low R-squared and next steps
A low R-squared means the model explains little of the variation in weight using height alone. Adding more predictors can help explain more variation. Removing intercept or ignoring R-squared is not good practice. A t-test is unrelated.
Final Answer:
Try adding more predictor variables to improve the model -> Option C
Quick Check:
Low R-squared? Add predictors [OK]
Hint: Low R-squared? Add more predictors to improve [OK]
Common Mistakes:
Removing intercept to fix low R-squared
Ignoring model fit quality
Confusing regression with hypothesis testing
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.