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