lmn <- function(data, x, y) {
library(ggplot2)
model <- lm(formula= paste(y,"~",x) , data = data)
print(summary(model))
scatter <- ggplot(data, aes(x = x, y = y )) +
geom_point() +
geom_smooth( formula = y ~ x, method = "lm") +
labs(x = "x", y = "y")
print(scatter)
#phương sai thay đổi
anova_result <- anova(model)
print(anova_result)
#dự báo
fitted_values <- fitted(model)
dubao <- predict(model, newdata = data)
print(dubao)
}
df <- data.frame(
y = c(7.6, 7.6, 7.6, 9.4, 9, 8.3, 9.5, 7, 7.6, 8.6, 7.795, 7.6, 7.78, 7.5, 8.5, 7.7, 7.6, 9.4, 7, 7),
x = c(77, 78, 80, 84, 70, 83.2, 84, 69, 80, 78, 77, 51.23, 77, 68, 74, 77, 80, 84, 69, 74)
)
lmn(data = df, "x", "y")
##
## Call:
## lm(formula = paste(y, "~", x), data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.9209 -0.6096 -0.2777 0.6279 1.2715
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.36132 1.66463 2.620 0.0174 *
## x 0.04810 0.02188 2.199 0.0412 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7327 on 18 degrees of freedom
## Multiple R-squared: 0.2117, Adjusted R-squared: 0.1679
## F-statistic: 4.835 on 1 and 18 DF, p-value: 0.04121

## Analysis of Variance Table
##
## Response: y
## Df Sum Sq Mean Sq F value Pr(>F)
## x 1 2.5958 2.59582 4.8348 0.04121 *
## Residuals 18 9.6643 0.53691
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 1 2 3 4 5 6 7 8
## 8.065250 8.113353 8.209558 8.401970 7.728529 8.363488 8.401970 7.680426
## 9 10 11 12 13 14 15 16
## 8.209558 8.113353 8.065250 6.825637 8.065250 7.632323 7.920941 8.065250
## 17 18 19 20
## 8.209558 8.401970 7.680426 7.920941
lmnew <- function(data, dependent_var, ...) {
# Tạo formula cho mô hình hồi quy đa biến
formula <- paste(dependent_var, "~", paste(..., collapse = " + "))
# Xây dựng mô hình hồi quy đa biến
model <- lm(formula, data = data)
print(summary(model))
#phương sai thay đổi
anova_result <- anova(model)
print(anova_result)
}
library(gapminder)
## Warning: package 'gapminder' was built under R version 4.2.3
data("gapminder")
names(gapminder) <- c("c","ct","y","l","p","g")
lmnew(gapminder,dependent_var = "g",c("l","p") )
##
## Call:
## lm(formula = formula, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11222 -4520 -1252 2466 106780
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.929e+04 9.116e+02 -21.162 < 2e-16 ***
## l 4.486e+02 1.501e+01 29.888 < 2e-16 ***
## p -5.923e-06 1.826e-06 -3.243 0.00121 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7984 on 1701 degrees of freedom
## Multiple R-squared: 0.3448, Adjusted R-squared: 0.344
## F-statistic: 447.5 on 2 and 1701 DF, p-value: < 2.2e-16
##
## Analysis of Variance Table
##
## Response: g
## Df Sum Sq Mean Sq F value Pr(>F)
## l 1 5.6381e+10 5.6381e+10 884.495 < 2.2e-16 ***
## p 1 6.7039e+08 6.7039e+08 10.517 0.001206 **
## Residuals 1701 1.0843e+11 6.3744e+07
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1