setwd("E:/Semester 2/Data Mining Visualisation/LabAss2")
df <- read.csv('E:/Semester 2/Data Mining Visualisation/LabAss2/bike_buyers.csv')

Data: ID : ID KTP STatus : status apakah maried/singgle gender: laki2/wanita income :pendapatan pembeli& peinjam children : jumlah anak yang dimiliki Education: latar belakang dari pembeli home owner: apakah punya rumah/engga cars: punya mobil/tidak comute distance : jarak rumah pembeli dengan company Region : apakah lokasi di mana peminjam age : usia pembeli /pemonajm purchased : apakah jadi meminjam / tidak

head(df)
##   ï..ID Marital.Status Gender Income Children       Education     Occupation
## 1 12496        Married Female  40000        1       Bachelors Skilled Manual
## 2 24107        Married   Male  30000        3 Partial College       Clerical
## 3 14177        Married   Male  80000        5 Partial College   Professional
## 4 24381         Single         70000        0       Bachelors   Professional
## 5 25597         Single   Male  30000        0       Bachelors       Clerical
## 6 13507        Married Female  10000        2 Partial College         Manual
##   Home.Owner Cars Commute.Distance  Region Age Purchased.Bike
## 1        Yes    0        0-1 Miles  Europe  42             No
## 2        Yes    1        0-1 Miles  Europe  43             No
## 3         No    2        2-5 Miles  Europe  60             No
## 4        Yes    1       5-10 Miles Pacific  41            Yes
## 5         No    0        0-1 Miles  Europe  36            Yes
## 6        Yes    0        1-2 Miles  Europe  50             No
tail(df)
##      ï..ID Marital.Status Gender Income Children       Education     Occupation
## 995  13466        Married   Male  80000        5 Partial College   Professional
## 996  23731        Married   Male  60000        2     High School   Professional
## 997  28672         Single   Male  70000        4 Graduate Degree   Professional
## 998  11809        Married         60000        2       Bachelors Skilled Manual
## 999  19664         Single   Male 100000        3       Bachelors     Management
## 1000 12121         Single   Male  60000        3     High School   Professional
##      Home.Owner Cars Commute.Distance        Region Age Purchased.Bike
## 995         Yes    3        1-2 Miles North America  46             No
## 996         Yes    2        2-5 Miles North America  54            Yes
## 997         Yes    0        2-5 Miles North America  35            Yes
## 998         Yes    0        0-1 Miles North America  38            Yes
## 999          No    3        1-2 Miles North America  38             No
## 1000        Yes    2        10+ Miles North America  53            Yes

EXPLANATION Dari data bike buyers dapat dilihat bahwa tidak ada variabel yang terdistribusi normal. Hanya variabel age/usia sajalah yang hampir berbentuk seperti lonceng (bell curved).

dim(df)
## [1] 1000   13

EXPLANATION Data Insurance terdiri dari 1000 observasi dan 13 variables.

str(df)
## 'data.frame':    1000 obs. of  13 variables:
##  $ ï..ID           : int  12496 24107 14177 24381 25597 13507 27974 19364 22155 19280 ...
##  $ Marital.Status  : chr  "Married" "Married" "Married" "Single" ...
##  $ Gender          : chr  "Female" "Male" "Male" "" ...
##  $ Income          : int  40000 30000 80000 70000 30000 10000 160000 40000 20000 NA ...
##  $ Children        : int  1 3 5 0 0 2 2 1 2 2 ...
##  $ Education       : chr  "Bachelors" "Partial College" "Partial College" "Bachelors" ...
##  $ Occupation      : chr  "Skilled Manual" "Clerical" "Professional" "Professional" ...
##  $ Home.Owner      : chr  "Yes" "Yes" "No" "Yes" ...
##  $ Cars            : int  0 1 2 1 0 0 4 0 2 1 ...
##  $ Commute.Distance: chr  "0-1 Miles" "0-1 Miles" "2-5 Miles" "5-10 Miles" ...
##  $ Region          : chr  "Europe" "Europe" "Europe" "Pacific" ...
##  $ Age             : int  42 43 60 41 36 50 33 43 58 NA ...
##  $ Purchased.Bike  : chr  "No" "No" "No" "Yes" ...

EXPLANATION Data bike buyers trdiri dari 1000 observasi dan 13 variabel yakni ID, Martial Status, Gender, Income, Children, Education, Occupation, Home Owner, Cars, Commute Distance, Region, Age, dan Purchased Bike. Data bike buyrs hanya memiliki 2 jenis tipe data yakni integer yakni pada variabel ID, Income, Children, Cars, dan Age sedangkan tipe data characther dimiliki pada variabel Martial status, Gender, Education, Occupation, Home Owner, Region, dan Purchased Bike.

*Pada data bike buyers jumlah tipe data characther lebih banyak dari pada tipe data integer.

Catatan: int = integer -> nilai bulat char = characther -> nilai yang tidak dapat dioperasikan / string

BasicSummary <- function(df, dgts = 3){
## #
## ################################################################
## #
## # Create a basic summary of variables in the data frame df,
## # a data frame with one row for each column of df giving the
## # variable name, type, number of unique levels, the most
## # frequent level, its frequency and corresponding fraction of
## # records, the number of missing values and its corresponding
## # fraction of records
## #
## ################################################################
## #
m <- ncol(df)
varNames <- colnames(df)
varType <- vector("character",m)
topLevel <- vector("character",m)
topCount <- vector("numeric",m)
missCount <- vector("numeric",m)
levels <- vector("numeric", m)

for (i in 1:m){
x <- df[,i]
varType[i] <- class(x)
xtab <- table(x, useNA = "ifany")
levels[i] <- length(xtab)
nums <- as.numeric(xtab)
maxnum <- max(nums)
topCount[i] <- maxnum
maxIndex <- which.max(nums)
lvls <- names(xtab)
topLevel[i] <- lvls[maxIndex]
missIndex <- which((is.na(x)) | (x == "") | (x == " "))
missCount[i] <- length(missIndex)
}
n <- nrow(df)
topFrac <- round(topCount/n, digits = dgts)
missFrac <- round(missCount/n, digits = dgts)
## #
summaryFrame <- data.frame(variable = varNames, type = varType,
 levels = levels, topLevel = topLevel,
 topCount = topCount, topFrac = topFrac,
 missFreq = missCount, missFrac = missFrac)
 return(summaryFrame)
 }

BasicSummary(df)
##            variable      type levels      topLevel topCount topFrac missFreq
## 1             ï..ID   integer   1000         11000        1   0.001        0
## 2    Marital.Status character      3       Married      535   0.535        7
## 3            Gender character      3          Male      500   0.500       11
## 4            Income   integer     17         60000      165   0.165        6
## 5          Children   integer      7             0      274   0.274        8
## 6         Education character      5     Bachelors      306   0.306        0
## 7        Occupation character      5  Professional      276   0.276        0
## 8        Home.Owner character      3           Yes      682   0.682        4
## 9              Cars   integer      6             2      342   0.342        9
## 10 Commute.Distance character      5     0-1 Miles      366   0.366        0
## 11           Region character      3 North America      508   0.508        0
## 12              Age   integer     54            40       40   0.040        8
## 13   Purchased.Bike character      2            No      519   0.519        0
##    missFrac
## 1     0.000
## 2     0.007
## 3     0.011
## 4     0.006
## 5     0.008
## 6     0.000
## 7     0.000
## 8     0.004
## 9     0.009
## 10    0.000
## 11    0.000
## 12    0.008
## 13    0.000

EXPLANATION * Data insurance memiliki 1000 observasi dan 13 variabel dengan 2 jenis tipe data. * Pada variabel ID, terdapat 1000 nilai berbeda, hal ini merupakan hal yang wajar dikarenakan ID merupakan penanda masing-masing orang jadi tidak mungkin ada data ID yag terduplikasi. * Pada variabel MArtial Status terdapat 3 nilai yang berbeda, dengan status “menikah” terbanyak yakni sebanyan 535. Pada variabel Gender terdapt 3 nilai yang berbeda, terlihat bahwa pembeli/peminjam sepeda kebanyakan bergender laki-laki yakni sebanyak 500 observasi atau sekitar 50% dari observasi. Pada variabel income terdapat 17 nilai berbeda dengan nilai paling sering muncul adalah 60.000 sebanyak 165 kali. * Pada variabel Children terdapat 7 nilai berbeda dengan pemasukan 0 sebagai nilai yang paling seing muncul. Pada vriabel education terdiri dari 5 nilai berbeda dengan gelar yang paling banyak disandang oleh pembeli maupun pembeli adalah “Bachelors” yakni sebanyak 306 observasi. Pada variabel Occupation, tedapat 5 nilai berbeda dengan pekerjaan yang paling banyak muncul ialah “Professional” yakni sebanyak 276 observasi. * Pada variabel Home Owenr terdapat 3 nilai berbeda dengan “Ya” sebagai modus sebanyak 682, atau dengan kata lain dari 1000 observasi, lebih dari sebagian pembeli maupun peminjam sepeda memiliki rumah. Pada variabel Cars terdapat 6 nilai berbeda dengan 2 sebagai nilai yang paling sering muncul (342 kalib atau setara dengan 34,2%) Pada variabel commute Distance terdpat 5 nilai berbeda dengan modus 0-1 Miles (sebanyak 366 kali atau setara dengan 36,6%) Pada variabel region terdapat 3 nilai berbeda dengan modus “North America” (sebanyak 508 atau setara dengan 50.8%) Pada variabel region terdapat 54 nilai berbeda dengan nilai modus ialah usia 40 tahun (sebanyak 40 atau setara dengan 4%) *Pada variabel prchased Bike terdapt 2 nilau berbeda dengan “No” sebagai nilai yang paling sering muncul(sebanyak 519 atau setara dengan51.9%)

Dari penjelasan diatas didapatkan insight sebagai berikut:

Data bike buyer juga merupakan data yang tidak lengkap atau memiliki nilai missing value yakni pada seluruh variabel kecuali ID, Education, Occupation, Coummute Distance,Region, dan Purchased bike, sehingga perlu dilakukan penanganan khusus sebelum berlanjut pada tahapan pengelolahan data selanjutnya.

Nilia missing value terbanyak tercatat pada variabel gender yakni sebanyak 11 observasi mengalami nilai missing value.

sapply(df[,c(4,5,9,12)],mean, na.rm=TRUE)
##       Income     Children         Cars          Age 
## 56267.605634     1.910282     1.455096    44.181452
sapply(df[,c(4,5,9,12)],quantile, na.rm=TRUE)
##      Income Children Cars Age
## 0%    10000        0    0  25
## 25%   30000        0    1  35
## 50%   60000        2    1  43
## 75%   70000        3    2  52
## 100% 170000        5    4  89

EXPLANATION Dari data diatas dapat di peroleh infoemasi sebagai berikut: * 1. Rata - rata pendapatan dari pembeli/peminjam sepeda adalah 56.267,rata-rata ini terbilang cukup besar sebab pendapatan rata-rata di Amerika ialah sebesar 33,740 dolar. * 2. Mayoritas pembeli/peminjam seepeda memiliki anak sebanyak 1- 2 anak * 3. Rata-rata pembeli/peminjam sepeda juga telah memiliki transportasi pribadi yakni mobil sebanyak 1-2 buah * 4. Rata-rata peminjam/pembeli sepeda berusia 44 tahun * 5. Pendapatan terkecil dari pembeli/peminjam sebpeda adalah 10.00 dolar, dengan usia termuda yakni 25 tahun, dan terdapat pembeli/peminjam sepeda yang belum memiliki anak, serta terdapat pembeli/peminjam sepeda yang tidak memiliki mobil * 6. Sebaliknya pendapatan terbesar dari peminjam/pembeli mobil ialah 170.000 * 7. Terdapat pembeli/peminjma sepeda yang meiliki 5 orang anak (paling banyak) * 8. Terdapat pembeli/peminjma sepeda yang meiliki 4 buah mobil (paling banyak) * 9. Terdapat pembeli/peminjma sepeda yang berusia 89 tahun (paling banyak)

library(Hmisc)
## Warning: package 'Hmisc' was built under R version 4.1.3
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.1.3
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
## 
##     format.pval, units
describe(df)
## df 
## 
##  13  Variables      1000  Observations
## --------------------------------------------------------------------------------
## ï..ID 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##     1000        0     1000        1    19966     6176    11781    12627 
##      .25      .50      .75      .90      .95 
##    15291    19744    24471    27544    28413 
## 
## lowest : 11000 11047 11061 11090 11116, highest: 29337 29355 29380 29424 29447
## --------------------------------------------------------------------------------
## Marital.Status 
##        n  missing distinct 
##      993        7        2 
##                           
## Value      Married  Single
## Frequency      535     458
## Proportion   0.539   0.461
## --------------------------------------------------------------------------------
## Gender 
##        n  missing distinct 
##      989       11        2 
##                         
## Value      Female   Male
## Frequency     489    500
## Proportion  0.494  0.506
## --------------------------------------------------------------------------------
## Income 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##      994        6       16    0.986    56268    34273    10000    20000 
##      .25      .50      .75      .90      .95 
##    30000    60000    70000   100000   120000 
## 
## lowest :  10000  20000  30000  40000  50000, highest: 120000 130000 150000 160000 170000
##                                                                          
## Value       10000  20000  30000  40000  50000  60000  70000  80000  90000
## Frequency      73     74    134    153     40    165    123     90     38
## Proportion  0.073  0.074  0.135  0.154  0.040  0.166  0.124  0.091  0.038
##                                                            
## Value      100000 110000 120000 130000 150000 160000 170000
## Frequency      29     16     17     32      4      3      3
## Proportion  0.029  0.016  0.017  0.032  0.004  0.003  0.003
## --------------------------------------------------------------------------------
## Children 
##        n  missing distinct     Info     Mean      Gmd 
##      992        8        6     0.96     1.91    1.827 
## 
## lowest : 0 1 2 3 4, highest: 1 2 3 4 5
##                                               
## Value          0     1     2     3     4     5
## Frequency    274   169   209   133   126    81
## Proportion 0.276 0.170 0.211 0.134 0.127 0.082
## --------------------------------------------------------------------------------
## Education 
##        n  missing distinct 
##     1000        0        5 
## 
## lowest : Bachelors           Graduate Degree     High School         Partial College     Partial High School
## highest: Bachelors           Graduate Degree     High School         Partial College     Partial High School
##                                                                       
## Value                Bachelors     Graduate Degree         High School
## Frequency                  306                 174                 179
## Proportion               0.306               0.174               0.179
##                                                   
## Value          Partial College Partial High School
## Frequency                  265                  76
## Proportion               0.265               0.076
## --------------------------------------------------------------------------------
## Occupation 
##        n  missing distinct 
##     1000        0        5 
## 
## lowest : Clerical       Management     Manual         Professional   Skilled Manual
## highest: Clerical       Management     Manual         Professional   Skilled Manual
##                                                                       
## Value            Clerical     Management         Manual   Professional
## Frequency             177            173            119            276
## Proportion          0.177          0.173          0.119          0.276
##                          
## Value      Skilled Manual
## Frequency             255
## Proportion          0.255
## --------------------------------------------------------------------------------
## Home.Owner 
##        n  missing distinct 
##      996        4        2 
##                       
## Value         No   Yes
## Frequency    314   682
## Proportion 0.315 0.685
## --------------------------------------------------------------------------------
## Cars 
##        n  missing distinct     Info     Mean      Gmd 
##      991        9        5    0.925    1.455    1.226 
## 
## lowest : 0 1 2 3 4, highest: 0 1 2 3 4
##                                         
## Value          0     1     2     3     4
## Frequency    238   267   342    85    59
## Proportion 0.240 0.269 0.345 0.086 0.060
## --------------------------------------------------------------------------------
## Commute.Distance 
##        n  missing distinct 
##     1000        0        5 
## 
## lowest : 0-1 Miles  1-2 Miles  10+ Miles  2-5 Miles  5-10 Miles
## highest: 0-1 Miles  1-2 Miles  10+ Miles  2-5 Miles  5-10 Miles
##                                                                  
## Value       0-1 Miles  1-2 Miles  10+ Miles  2-5 Miles 5-10 Miles
## Frequency         366        169        111        162        192
## Proportion      0.366      0.169      0.111      0.162      0.192
## --------------------------------------------------------------------------------
## Region 
##        n  missing distinct 
##     1000        0        3 
##                                                     
## Value             Europe North America       Pacific
## Frequency            300           508           192
## Proportion         0.300         0.508         0.192
## --------------------------------------------------------------------------------
## Age 
##        n  missing distinct     Info     Mean      Gmd      .05      .10 
##      992        8       53    0.999    44.18    12.85    28.00    30.00 
##      .25      .50      .75      .90      .95 
##    35.00    43.00    52.00    60.90    65.45 
## 
## lowest : 25 26 27 28 29, highest: 73 74 78 80 89
## --------------------------------------------------------------------------------
## Purchased.Bike 
##        n  missing distinct 
##     1000        0        2 
##                       
## Value         No   Yes
## Frequency    519   481
## Proportion 0.519 0.481
## --------------------------------------------------------------------------------

EXPLANATION DAri data diatas dapat dilihat bahwa * 1.Seluruh ID pembeli/peminjam sepeda terdiri dari 5 digit * 2. Status maried pada pembahasan sebelumnya memiliki 3 distinct value setelah diteluri 3 distict value tersebut adalah Married/Single/NA (missing value) * 3. Status gender pada pembahasan sebelumnya memiliki 3 distinct value setelah diteluri 3 distict value tersebut adalah Female/Male/NA (missing value) * 4. Status Education pada pembahasan sebelumnya memiliki 5 distinct value setelah diteluri 5 distict value tersebut adalah Bachelors/Graduate Degree/High School/Partial College/Partial High School * 5. Variabel COmmute Distance berbentuk kategori pilihan jarak * 6. Status Occupation pada pembahasan sebelumnya memiliki 5 distinct value setelah diteluri 5 distict value tersebut adalah Clerical/Management/Manual Professional/Skilled Manual * 7. Data pembeli/penjual sepeda didapat dari orang-orang yang tinggal di bumi belahan barat

###3. Look for data anomalies ####a.qqplot() function

library(car)
## Warning: package 'car' was built under R version 4.1.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.1.3
par(mfrow=c(1,2))
qqPlot(df$Income)
## [1] 13 44
qqPlot(df$Age)

## [1] 376 402

EXPLANATION Dari data diatas dapat dilihat bahwa variabel income nilai yang diskrit, tidak terdistribusi normal, dan memiliki cukup banyak outliers. Sedangkan pada variabel age dari grafik di atas terlihat nilai yang cenderung continu, cukup terdistribusi normal ealupun tidak sempurna (skewed), dan lebih sedikit memiliki nilai outliers.

library(car)
par(mfrow=c(1,2))
qqPlot(df$Children)
## [1]  3 13
qqPlot(df$Cars)

## [1]  7 12

EXPLANATION Dari garfik diatas dapat dilihat bahwa baik children maupun cars belum memiliki data yang terdistribusi normal. Dalam hal ini nilai outliers dari belum ditemukan sebab seorang yang memiliki jumlah anak 0 amupun 5 merupakan hal yang wajar, demikian halnya dengan Cars, hal ini merupakan hal yang wajar bila sesorang meiliki 4 mobil ataupun tidak meiliki mobil sama sekali.

out <- boxplot.stats(df$Income)$out

boxplot(df$Income,
  ylab = "",
  main = "Income"
)

mtext(paste("Outliers: ", paste(out, collapse = ", ")))

out <- boxplot.stats(df$Children)$out

boxplot(df$Children,
  ylab = "",
  main = "Children"
)

mtext(paste("Outliers: ", paste(out, collapse = ", ")))

out <- boxplot.stats(df$Cars)$out

boxplot(df$Cars,
  ylab = "",
  main = "Cars"
)

mtext(paste("Outliers: ", paste(out, collapse = ", ")))

out <- boxplot.stats(df$Age)$out

boxplot(df$Age,
  ylab = "",
  main = "Age"
)

mtext(paste("Outliers: ", paste(out, collapse = ", ")))

####c. Find Outlier()Function

ThreeSigma <- function(x, t = 3){

 mu <- mean(x, na.rm = TRUE)
 sig <- sd(x, na.rm = TRUE)
 if (sig == 0){
 message("All non-missing x-values are identical")
}
 up <- mu + t * sig
 down <- mu - t * sig
 out <- list(up = up, down = down)
 return(out)
 }

Hampel <- function(x, t = 3){

 mu <- median(x, na.rm = TRUE)
 sig <- mad(x, na.rm = TRUE)
 if (sig == 0){
 message("Hampel identifer implosion: MAD scale estimate is zero")
 }
 up <- mu + t * sig
 down <- mu - t * sig
 out <- list(up = up, down = down)
 return(out)
 }
   
BoxplotRule<- function(x, t = 1.5){

 xL <- quantile(x, na.rm = TRUE, probs = 0.25, names = FALSE)
 xU <- quantile(x, na.rm = TRUE, probs = 0.75, names = FALSE)
 Q <- xU - xL
 if (Q == 0){
 message("Boxplot rule implosion: interquartile distance is zero")
 }
 up <- xU + t * Q
 down <- xU - t * Q
 out <- list(up = up, down = down)
 return(out)
}   

ExtractDetails <- function(x, down, up){

 outClass <- rep("N", length(x))
 indexLo <- which(x < down)
 indexHi <- which(x > up)
 outClass[indexLo] <- "L"
 outClass[indexHi] <- "U"
 index <- union(indexLo, indexHi)
 values <- x[index]
 outClass <- outClass[index]
 nOut <- length(index)
 maxNom <- max(x[which(x <= up)])
 minNom <- min(x[which(x >= down)])
 outList <- list(nOut = nOut, lowLim = down,
 upLim = up, minNom = minNom,
 maxNom = maxNom, index = index,
 values = values,
 outClass = outClass)
 return(outList)
 }
FindOutliers <- function(x, t3 = 3, tH = 3, tb = 1.5){
 threeLims <- ThreeSigma(x, t = t3)
 HampLims <- Hampel(x, t = tH)
 boxLims <- BoxplotRule(x, t = tb)

 n <- length(x)
 nMiss <- length(which(is.na(x)))

 threeList <- ExtractDetails(x, threeLims$down, threeLims$up)
 HampList <- ExtractDetails(x, HampLims$down, HampLims$up)
 boxList <- ExtractDetails(x, boxLims$down, boxLims$up)

 sumFrame <- data.frame(method = "ThreeSigma", n = n,
 nMiss = nMiss, nOut = threeList$nOut,
 lowLim = threeList$lowLim,
 upLim = threeList$upLim,
 minNom = threeList$minNom,
 maxNom = threeList$maxNom)
 upFrame <- data.frame(method = "Hampel", n = n,
 nMiss = nMiss, nOut = HampList$nOut,
 lowLim = HampList$lowLim,
 upLim = HampList$upLim,
 minNom = HampList$minNom,
 maxNom = HampList$maxNom)
 sumFrame <- rbind.data.frame(sumFrame, upFrame)
 upFrame <- data.frame(method = "BoxplotRule", n = n,
 nMiss = nMiss, nOut = boxList$nOut,
 lowLim = boxList$lowLim,
 upLim = boxList$upLim,
 minNom = boxList$minNom,
 maxNom = boxList$maxNom)
 sumFrame <- rbind.data.frame(sumFrame, upFrame)

 threeFrame <- data.frame(index = threeList$index,
 values = threeList$values,
 type = threeList$outClass)
 HampFrame <- data.frame(index = HampList$index,
 values = HampList$values,
 type = HampList$outClass)
 boxFrame <- data.frame(index = boxList$index,
 values = boxList$values,
 type = boxList$outClass)
 outList <- list(summary = sumFrame, threeSigma = threeFrame,
 Hampel = HampFrame, boxplotRule = boxFrame)
 return(outList)
}
fullSummary <- FindOutliers(df$Income)
fullSummary$summary
##        method    n nMiss nOut    lowLim    upLim minNom maxNom
## 1  ThreeSigma 1000     6   10 -36935.85 149471.1  10000 130000
## 2      Hampel 1000     6   10 -28956.00 148956.0  10000 130000
## 3 BoxplotRule 1000     6   10  10000.00 130000.0  10000 130000
fullSummary <- FindOutliers(df$Children)
fullSummary$summary
##        method    n nMiss nOut    lowLim    upLim minNom maxNom
## 1  ThreeSigma 1000     8    0 -2.970448 6.791013      0      5
## 2      Hampel 1000     8    0 -2.447800 6.447800      0      5
## 3 BoxplotRule 1000     8    0 -1.500000 7.500000      0      5
fullSummary <- FindOutliers(df$Cars)
fullSummary$summary
##        method    n nMiss nOut   lowLim    upLim minNom maxNom
## 1  ThreeSigma 1000     9    0 -1.91017 4.820362      0      4
## 2      Hampel 1000     9    0 -3.44780 5.447800      0      4
## 3 BoxplotRule 1000     9  297  0.50000 3.500000      1      3
fullSummary <- FindOutliers(df$Age)
fullSummary$summary
##        method    n nMiss nOut   lowLim    upLim minNom maxNom
## 1  ThreeSigma 1000     8    2 10.09543 78.26747     25     78
## 2      Hampel 1000     8    2  7.41760 78.58240     25     78
## 3 BoxplotRule 1000     8   25 26.50000 77.50000     27     74

EXPLANATION Berdasarkan ketiga metode diatas dapat dilihat bahwa pada variabel vars dan chlidren tidak memiliki nilai outliers. Sedangkan untuk variabel Income terdapat 10 ouliers, sedangkan untuk Age terdapat 2 ouliers.

library(lattice)
df_new = subset(df, select = c(4,5,9,12))
df_new <- na.omit(df_new)
df_new <- as.data.frame(df_new)
cor_data <- cor(df_new[,setdiff(names(df_new), 'Age')])
#Numerical Correlation Matrix
cor_data
##             Income  Children      Cars
## Income   1.0000000 0.2580830 0.4361234
## Children 0.2580830 1.0000000 0.2725464
## Cars     0.4361234 0.2725464 1.0000000
corrplot::corrplot(cor_data)

EXPLANATION Hubungan yang cukup kuat terlihat di antara cars dengan income. sedangkan children dengan income memiliki hubungan positif yang tidak terlalu kuat.

nf <- layout( matrix(c(1,1,2,3), nrow=2, byrow=TRUE) )


# Fill with plots
#buat kategori dengan kategori
mosaicplot(Age ~ Income, data = df, main = "", las = 1, shade = TRUE)

# Scatterplot between sugars and carbs
plot(df$Children, df$Age)

boxplot(Cars ~ Income, data= df, xlab = "Cars", ylab ="Income")