mtcars
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
## Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
## Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
## Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
## Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
## Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
## AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
## Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
## Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
## Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
## Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2
shapiro.test(mtcars$mpg)
## 
##  Shapiro-Wilk normality test
## 
## data:  mtcars$mpg
## W = 0.94756, p-value = 0.1229
shapiro.test(mtcars$wt)
## 
##  Shapiro-Wilk normality test
## 
## data:  mtcars$wt
## W = 0.94326, p-value = 0.09265
library(ggpubr)
## Loading required package: ggplot2
ggscatter(
  mtcars,
  x = "wt",
  y = "mpg"
)

#correlation
cor(mtcars$wt, mtcars$mpg)
## [1] -0.8676594
#using penguin dataset
# Load required libraries
library(palmerpenguins)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Load dataset
data("penguins")

# View first rows
head(penguins)
## # A tibble: 6 × 8
##   species island    bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
##   <fct>   <fct>              <dbl>         <dbl>             <int>       <int>
## 1 Adelie  Torgersen           39.1          18.7               181        3750
## 2 Adelie  Torgersen           39.5          17.4               186        3800
## 3 Adelie  Torgersen           40.3          18                 195        3250
## 4 Adelie  Torgersen           NA            NA                  NA          NA
## 5 Adelie  Torgersen           36.7          19.3               193        3450
## 6 Adelie  Torgersen           39.3          20.6               190        3650
## # ℹ 2 more variables: sex <fct>, year <int>
# Keep only Gentoo penguins and remove missing values
gentoo <- penguins %>%
  filter(species == "Gentoo") %>%
  select(bill_depth_mm, flipper_length_mm, bill_length_mm) %>%
  na.omit()

# Model 1: bill depth as a function of flipper length
model_flipper <- lm(bill_depth_mm ~ flipper_length_mm, data = gentoo)

# Model 2: bill depth as a function of bill length
model_bill <- lm(bill_depth_mm ~ bill_length_mm, data = gentoo)

# Summaries
summary(model_flipper)
## 
## Call:
## lm(formula = bill_depth_mm ~ flipper_length_mm, data = gentoo)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.64831 -0.48630  0.01715  0.39824  2.12406 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       -8.236854   2.114995  -3.895 0.000162 ***
## flipper_length_mm  0.106908   0.009734  10.983  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6972 on 121 degrees of freedom
## Multiple R-squared:  0.4992, Adjusted R-squared:  0.4951 
## F-statistic: 120.6 on 1 and 121 DF,  p-value: < 2.2e-16
summary(model_bill)
## 
## Call:
## lm(formula = bill_depth_mm ~ bill_length_mm, data = gentoo)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.55952 -0.52572 -0.06658  0.46041  2.95390 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     5.25101    1.05481   4.978 2.15e-06 ***
## bill_length_mm  0.20484    0.02216   9.245 1.02e-15 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7543 on 121 degrees of freedom
## Multiple R-squared:  0.4139, Adjusted R-squared:  0.4091 
## F-statistic: 85.46 on 1 and 121 DF,  p-value: 1.016e-15
# Compare R-squared values
summary(model_flipper)$r.squared
## [1] 0.4992319
summary(model_bill)$r.squared
## [1] 0.4139429
#Regression diagnostics
# Load libraries
library(palmerpenguins)
library(dplyr)

# Load data
data("penguins")

# Filter Gentoo penguins
gentoo <- penguins %>%
  filter(species == "Gentoo") %>%
  select(bill_depth_mm, flipper_length_mm, bill_length_mm) %>%
  na.omit()

# Linear model: bill depth ~ flipper length
model_flipper <- lm(bill_depth_mm ~ flipper_length_mm, data = gentoo)

# Linear model: bill depth ~ bill length
model_bill <- lm(bill_depth_mm ~ bill_length_mm, data = gentoo)

# Model summaries
summary(model_flipper)
## 
## Call:
## lm(formula = bill_depth_mm ~ flipper_length_mm, data = gentoo)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.64831 -0.48630  0.01715  0.39824  2.12406 
## 
## Coefficients:
##                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)       -8.236854   2.114995  -3.895 0.000162 ***
## flipper_length_mm  0.106908   0.009734  10.983  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6972 on 121 degrees of freedom
## Multiple R-squared:  0.4992, Adjusted R-squared:  0.4951 
## F-statistic: 120.6 on 1 and 121 DF,  p-value: < 2.2e-16
summary(model_bill)
## 
## Call:
## lm(formula = bill_depth_mm ~ bill_length_mm, data = gentoo)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.55952 -0.52572 -0.06658  0.46041  2.95390 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)     5.25101    1.05481   4.978 2.15e-06 ***
## bill_length_mm  0.20484    0.02216   9.245 1.02e-15 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.7543 on 121 degrees of freedom
## Multiple R-squared:  0.4139, Adjusted R-squared:  0.4091 
## F-statistic: 85.46 on 1 and 121 DF,  p-value: 1.016e-15
# Extract R-squared values
r2_flipper <- summary(model_flipper)$r.squared
r2_bill <- summary(model_bill)$r.squared

r2_flipper
## [1] 0.4992319
r2_bill
## [1] 0.4139429
# Compare predictors
# i have to check if (r2_flipper > r2_bill) 
# Flipper length is the better predictor of bill depth

# ANOVA: Do daily ozone measurements differ by month?
  # ANOVA
  
data("airquality")
  
library(ggplot2)
  
  # Convert Month into factor
  airquality$Month <- factor(airquality$Month)
  
  # Boxplot
  ggplot(airquality, aes(x = Month, y = Ozone)) +
    geom_boxplot()
## Warning: Removed 37 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

  # Check normality
  shapiro.test(airquality$Ozone)
## 
##  Shapiro-Wilk normality test
## 
## data:  airquality$Ozone
## W = 0.87867, p-value = 2.79e-08
  # Data are not normal, so use Kruskal-Wallis test
  kruskal.test(Ozone ~ Month, data = airquality)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Ozone by Month
## Kruskal-Wallis chi-squared = 29.267, df = 4, p-value = 6.901e-06
  # Pairwise comparison to see which months differ
  pairwise.wilcox.test(airquality$Ozone,
                       airquality$Month)
## Warning in wilcox.test.default(xi, xj, paired = paired, ...): cannot compute
## exact p-value with ties
## Warning in wilcox.test.default(xi, xj, paired = paired, ...): cannot compute
## exact p-value with ties

## Warning in wilcox.test.default(xi, xj, paired = paired, ...): cannot compute
## exact p-value with ties

## Warning in wilcox.test.default(xi, xj, paired = paired, ...): cannot compute
## exact p-value with ties

## Warning in wilcox.test.default(xi, xj, paired = paired, ...): cannot compute
## exact p-value with ties

## Warning in wilcox.test.default(xi, xj, paired = paired, ...): cannot compute
## exact p-value with ties

## Warning in wilcox.test.default(xi, xj, paired = paired, ...): cannot compute
## exact p-value with ties

## Warning in wilcox.test.default(xi, xj, paired = paired, ...): cannot compute
## exact p-value with ties

## Warning in wilcox.test.default(xi, xj, paired = paired, ...): cannot compute
## exact p-value with ties

## Warning in wilcox.test.default(xi, xj, paired = paired, ...): cannot compute
## exact p-value with ties
## 
##  Pairwise comparisons using Wilcoxon rank sum test with continuity correction 
## 
## data:  airquality$Ozone and airquality$Month 
## 
##   5      6      7      8     
## 6 0.5775 -      -      -     
## 7 0.0003 0.0848 -      -     
## 8 0.0011 0.1295 1.0000 -     
## 9 0.4744 1.0000 0.0060 0.0227
## 
## P value adjustment method: holm