Email : ali.19arifin@gmail.com
RPubs : https://rpubs.com/aliciaarifin/
Jurusan :
Statistika
Address : ARA Center, Matana University Tower
Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua,
Tangerang, Banten 15810.
Probability Distribution adalah distribusi yang menggambarkan pola distribusi. Probabilty distribution memiliki banyak macam, setiap distribusi memiliki fungsi masing-masing dan ciri khas.
Binomial distribution adalah distribusi yang menggunakan bilangan
diskrit. Peluang ini hanya memiliki 2 output yaitu “Sukses” dan “Gagal”.
Binomial distribution bisa dilakukan lebih dari 1x. Binomial ini mirip
dengan distribusi Bernoulli, yang membedakan adalah distribusi bernoulli
hanya bisa dilakukan 1x, sedangkan Binomial bisa dilakukan terus hingga
jumlah yang diperlukan (n).
Rumus dari Distribusi Binomial adalah
Contoh kasus yang menggunakan binomial distribution adalah flip
coin atau lempar koin, seperti “Berapa peluang dari 3”angka” dari 70
kali pelemparan koin?”
dalam R Binomial Distribusion bisa
menggunakan code dbinom() untuk dan
pbinom()
Poisson Distribution adalah probability distribution yang menggunakan
bilangan diskrit. Poisson distribution biasa disebut distribusi
pelayanan. pada distribusi ini terdapat simbol baru yaitu lambda \(\lambda\), yang memiliki arti rata-rata
dari jumlah event/ acara. Dengan \(x\)
adalah nilai yang diketahui agar dicari probabilitasnya.
Rumus :
Contoh kasus :
Jika diketahui seorang pemain NBA memiliki shooting
average 46%, berapa probabilitas jika \(X\) = 250 dan \(n\) = 700?
Uniform distribution adalah distribusi peluang yang outcome atau
peluangnya hampir sama. Uniform = seragam, jadi sama semua. Yang
membedakan dari distribusi yang lain adalah dengan memiliki interval
antara \(a\) dan \(b\), yang density function (peluang untuk
bilangan kontinu) adalah
Contoh : kasus” yang memilih suatu yang tidak memiliki bias, semua anggota memiliki kesempatan yang sama.
Distribusi ini merupakan distribusi yang membentuk eksponensial.
\(\mu\) adalah dengan rumus:
di R kode yang bisa digunakan utnuk membuat sample distribusi ini
menggunakan
rexp(), gambaran grafik exponential seperti di
bawah ini.
Distribusi Normal memiliki peluang (probability density function)
yang \(\mu\) adalah rata” populasi, dan
\(\sigma^2\) merupakan varians
jika X1,X2,x3,…,Xn adalah n independen random variabel yang memiliki
standar distribusi normal, Lalu memiliki chi-square distribution dengan
n degree of freedom. rata-rata / meannya n, dan variansnya 2n.
\(V=X_1^2 +X_2^2 +...+X_n^2\)
nanti di materi goodness of fit akan lebih dalam bahasnya.
Asumsikan random variabel Z berdistribusi normal, dan random V
mempunyai chi-squared distribution dengan m degree of freedom. Asumsikan
Z dan V adalah independen, maka rumusnya adalah
t = Z / sqrt(V/m) ~
\(t_m\)
JIka V1 dan V2 adalah 2 variabel random yang memiliki distribusi
chisquare dengan degree of freedom m1 dan m2, maka akan menggunakan F
distribution yang m1=pembilang dof, dan m2=penyebut dof.
F =
(V1/m1)/(V2/m2) ~ \(F_{m1,m2}\)
Confidence interval dalam bahasa Indonesia adalah selang kepercayaan.
Apa itu selang kepercayaan? Selang kepercayaan dipakai untuk mencari
kira-kira ada di bagian mana estimasi dari data yang kita dapat.
Estimasi yang dimaksud di sini bukan angka eksak seperti rata-rata,
melainkan rentang atau interval. Selang kepercayaan juga punya tingkat
eror yang berbeda-beda yang disesuaikan dengan situasi, biasanya secara
umum menggunakan tingkat error 5% atau \(\alpha = 5%\).
cara mencari selang
kepercayaan ini bisa dicari melalui 2 cara, yaitu jika diketahui
rata-rata populasi (Z-Test) dan jika tidak diketahui rata-rata populasi
(t-test).
JIka rata-rata populasi diketahui, kita akan menggunakan
Z-test dari Z a/2, dengan rumus
xbar +- Z a/2 . (sigma
/sqrt(n))
JIka rata-rata populasi tidak diketahui, kita akan menggunakan
t-test dari t a/2, dengan rumus
xbar +- t a/2 .( s /sqrt(n))
Dalam melakukan analisis data, kita pastinya akan menggunakan hipotesis untuk menguji asumsi-asumsi yang ada. Hipotesis bisa diterima atau ditolak.
Ada 3 tipe tes hipotesis, Left-tailed, right-tailed, dan
two-tailed. * Left-tailed + Ketika asumsinya percaya bahwa miu < miu0
(H1) + Tolak H0 jika Z atau t hitung < -t atau Z alpha
Tipe error dalam ini juga terdapat 2 error, yaitu error tipe 1 dan error tipe 2. Error type 1 (false positive) dan Type 2 (false Negative). Probabilitas type 1 error disebut siknifikansi level (\(\alpha\)), dan probabilitas type 2 error adalah \(\beta\).
AB testing adalah ketika kita menggunakan satu sample yang dipecah
menjadi 2 untuk mencari yang mana yang lebih efektif. Proporsi pecahan
samplenya bisa bervariasi, 50-50 70-30, atau pecahan lainnya. Pecahahan
ini disesuaikan dengan tujuan statistik yang ingin dicapai. AB testing
ini dicoba untuk mengetahui apakah adanya perbedaan jika dilakukan
perlakuan yang berbeda. Independent t-test merupakan salah satu contoh
AB testing. AB testing ini digunakan untuk mencari varian mana yang
lebih efektif. AB testing ini bisa dilakukan dengan bivariat ataupun
multivariat.
Jika ingin melakukan AB testing, dipastikan bahwa
data/sample yang sudah bisa langsung diolah. Jika terdapat masalah pada
data, bisa dilakukan AA testing terlebih dahulu untuk memaksimalkan
test.
AA testing adalah test statistik yang digunakan untuk
membandingan antara 2 populasi yang berbeda dengan uji perlakuan yang
sama. AA testing ini disebut dengan paired t-test.
Test yang digunakan jika sample data dari beberapa populasi
(distribusi normal atau dengan distribusi Weibull). Test ini melihat
apakah sample yang digunakan sudah merepresentasi data asli (populasi).
Test yang biasa digunakan adalah chi-squere, kolmogorov smirnov,
anderson darling, dan shapiro wilk. Untuk kali ini kita akan fokus di
Chi-squere test.
Chisquere (\(X^2\)) test adalah hipotesis test untuk
proporsi dari satu atau lebih multinominal variabel kategori. Chisquere
goodness of fit ini juga biasa disebut non-parametic test, yang berarti
test ini tidak mengestimasi parameter populasi.
Lalu ada juga
Independence Chi-squere test, Homogenity Chi-Squere, dan Multinomial
Goodness of fit
Untuk hipotesis, jika p-value < daripada alpha,
maka H0 ditolak. H0= bisa berupa independen atau berdistribusi normal,
disesuaikan dengan test yang digunakan.
Regresi adalah salah satu metode untuk memprediksi.
Regresi
membutuhkan asumsi-asumsi yang perlu dilakukan sebelum melanjutkan
regresi : * Linearitas, apakah linear atau tidak, jika tidak linear maka
buat non-linear * Auto korelasi, apakah nilai sebelumnya mempengaruhi
atau tidak * Homogenitas, apakah variansnya sama? Jika varians tidak
konstan, regresi tidak akurat. * Multikolinearitas, apakah sesama
variabel dependen memiliki hubungan? Jika terdapat hubungan maka akan
mempengaruhi output regresi atau hasil implementasi regresi.
Simple Linear regression adalah regresi yang variabel dependen dan variabel independennya numerik. Simple linear regression adalah regresi yang variabel dependen dan variabel independennya masing-masing 1.
regresi yang mana variabel independen dan variabel dependennya numerik. Regresi ini variabel independennya 1, dan variabel dependennya lebih dari 1 (>1).
Regresi ini adalah regresi yang tidak memerlukan tes autokorelasi, homogenitas, dan multikolinearitas. Tetapi untuk regresi ini hanya bagus digunakan jika data yang kita punya linear. Regresi ini menggunakan parameter AIC, model yang terbaik adalah model yang memiliki AIC paling besar. AIC adalah Akaike Information Criterion. Sayangnya regresi ini memiliki kelemahan, yaitu nge-run nya lama alias lemot, dan tidak bisa digunakan dengan non-linear. Karena metode ini akan mencari semua kemungkinan model yang ada, laptop / PC yang digunakan bisa lebih lambat dari biasanya (saat nge-run coding saja).
Logistic regression adalah regresi yang outputnya numerik dan
inputnya merupakan variabel kategorik atau numerik. Jadi logistic
regression adalah regresi yang variabel dependennya campur (kategorikal
dan numerik). Regresi ini memiliki n output, sesuai dengan berapa jenis
kategori. Logistic regression ini akan membentuk n hasil regresi dalam
suatu data, jadi nanti akan terbentuk n garis pada scatter plot atau
visualisasinya.
Contohnya jika dalam suatu regresi tingkat
kesehatan gigi dan mulut, variabelnya adalah nilai dmft, umur, sehari
gosok gigi berapa kali, dan perokok. Maka outputnya akan memiliki
Yperokok dan Y bukan perokok.
Anova (analisis of variance) adalah test regresi yang digunakan untuk
membandingkan. Anova jarang digunakan untuk memprediksi. Anova memiliki
input kategorik, dan output numerik. Ingat bahwa Anova memiliki 1
output. Anova ini gunanya untuk melihat apakah terdapat hubungan antar
kelompok. ANOVA merupakan salah satu metode AB testing. Anova juga bisa
dibilang seperti hipotesis.
Contohnya jika terdapat 2 kelompok yang
memiliki mean dan n orang yang sama. Apakah kedua kelompok tersebut
sama? Jawabannya tidak sama, walaupun rata-ratanya sama, varians nya
tetap saja berbeda. Kita akan menggunakan ANOVA untuk mencari apakah ada
perbedaan yang siknifikan atau tidak antara 2 kelompok tersebut.
Asumsi ANOVA ada 4 yaitu + independence, pastikan variabel dependennya
tidak memempengaruhi variabel lainnya. + no significant outlier, tidak
memiliki pencilan + normalitas, harus normal, jika tidak gunakan test
non-parametrik + homogenitas, varians harus konstan
Jika salah
satu asumsi tidak terpenuhi gunakan non-parametrik test (saran :kruskal
wallis test)
Anova dibagi menjadi 3 yaitu one-way, two-way, dan
multi-way. Anova oneway adalah extention of independent sample untuk
lebih dari 2 grup yang hanya membandingkan 1 faktor, two-way =
membandingkan 2 faktor, multiway = membandingkan lebih dari 2 faktor.
Faktor yang dimaksud disini adalah variabel dependennya.
ANOVA memiliki hipotesis : + Hipotesis 0 : \(\mu_a =\mu_b = \mu_c =...=\mu_n =\) +
HIpotesis \(\alpha\) =\(\mu_a \ne \mu_b \ne \mu_c \ne...\ne \mu_n
=\) + Reject H0 jika p-value \(\le
\alpha\) dan Accept H0 jika p-value > \(\alpha\), JIka H0 ditolak makan terdapat
perbedaan. Perbedaan tersebut kita tidak tahu yang mana yang berbeda,
bisa jadi hanya satu yang beda, atau semua berbeda. maka dari itu kita
bisa gunakan uji lanjut menggunakan Uji Parsial atau sapiro test
(sapiro()) , uji tukey ,dan levine’s test (untuk mencek
data homogen atau tidak).
MANOVA (multivariate analysis of variance) adalah anova yang memiliki lebih dari 1 outcome.MAnova lebih mengarah ke experimental dan berfokus pada variabel dependen.
Uji asumsi anova : + variabel dependennya berdistribusi normal
(mshapiro.test() dalam package mvnormtest) +
homogenitas varians antar priktor + linearitas antar semua variabel
dependen, semua covariat, dan semua variabel dependen-kovariat.
# two-way dengan standar deviasi populasi tidak diketahui
miu0 = 250
xbar = 235
s = 35
n = 60
alpha = 0.05
t = (xbar-miu0)/(s/sqrt(n)) ; t## [1] -3.3197
t.tab = qt(1-alpha/2,df = n-1)
c(-t.tab, t.tab)## [1] -2.000995 2.000995
pval = 2*pt(t, df = n-1);pval## [1] 0.001548771
Karena t berada di daerah penolakan (t hitung < t tab, dan pval <0,05), H0 ditolak. Maka bisa dikatakan klaim penjual tersebut bisa kita tolak.
library(readxl)
data.anova = read_excel('data.anova.xlsx')
# munculkan data agar tidak terlalu banyak munculnya
head(data.anova)## # A tibble: 6 × 6
## no karies JK total Kelas Umur
## <dbl> <chr> <chr> <dbl> <chr> <dbl>
## 1 1 Ada Laki-laki 7 Kelas 6 11
## 2 2 Ada Laki-laki 8 Kelas 6 12
## 3 3 Ada Laki-laki 8 Kelas 6 11
## 4 4 Ada Perempuan 7 Kelas 6 11
## 5 5 Tidak Ada Perempuan 8 Kelas 6 11
## 6 6 Tidak Ada Perempuan 8 Kelas 6 11
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
library(rstatix)##
## Attaching package: 'rstatix'
## The following object is masked from 'package:stats':
##
## filter
library(tidyr)
library(ggplot2)
data.anova %>%
sample_n_by(karies, Kelas) ## # A tibble: 12 × 6
## no karies JK total Kelas Umur
## <dbl> <chr> <chr> <dbl> <chr> <dbl>
## 1 148 Ada Laki-laki 9 Kelas 1 7
## 2 48 Ada Perempuan 8 Kelas 2 8
## 3 113 Ada Laki-laki 9 Kelas 3 10
## 4 106 Ada Perempuan 10 Kelas 4 9
## 5 17 Ada Perempuan 8 Kelas 5 10
## 6 4 Ada Perempuan 7 Kelas 6 11
## 7 151 Tidak Ada Perempuan 7 Kelas 1 6
## 8 133 Tidak Ada Laki-laki 6 Kelas 2 8
## 9 119 Tidak Ada Laki-laki 8 Kelas 3 8
## 10 23 Tidak Ada Perempuan 7 Kelas 4 10
## 11 85 Tidak Ada Perempuan 10 Kelas 5 10
## 12 72 Tidak Ada Laki-laki 6 Kelas 6 11
# cari summarynya
data.anova %>%
group_by(karies, JK)%>%
get_summary_stats(total, type = "mean_sd")## # A tibble: 4 × 6
## karies JK variable n mean sd
## <chr> <chr> <fct> <dbl> <dbl> <dbl>
## 1 Ada Laki-laki total 63 7.62 1.60
## 2 Ada Perempuan total 56 7.86 1.57
## 3 Tidak Ada Laki-laki total 16 7.25 1.06
## 4 Tidak Ada Perempuan total 18 7.94 0.998
# cek asumsi outlier yang ekstrim
ggplot(data.anova, aes(x = karies, y = total, fill = JK)) +
geom_boxplot() +
geom_jitter(shape = 15,
color = "steelblue",
position = position_jitter(0.21)) +
theme_minimal()data.anova %>%
group_by(karies, JK)%>%
identify_outliers(total)## [1] karies JK no total Kelas Umur is.outlier
## [8] is.extreme
## <0 rows> (or 0-length row.names)
Karena pas dilihat tidak ada outlier dan
anova.interaksi = aov(total ~ JK * karies, data = data.anova)
anova.tambahan = aov(total ~ karies + JK, data = data.anova)
anova.karies = aov(total ~ karies, data = data.anova)
anova.JK = aov(total ~ JK, data = data.anova)
anova.nol = aov(total ~ 1, data = data.anova)summary(anova.interaksi)## Df Sum Sq Mean Sq F value Pr(>F)
## JK 1 4.3 4.264 1.939 0.166
## karies 1 0.5 0.470 0.214 0.645
## JK:karies 1 1.4 1.372 0.624 0.431
## Residuals 149 327.7 2.199
summary(anova.tambahan)## Df Sum Sq Mean Sq F value Pr(>F)
## karies 1 0.3 0.340 0.155 0.694
## JK 1 4.4 4.394 2.003 0.159
## Residuals 150 329.0 2.194
summary(anova.karies)## Df Sum Sq Mean Sq F value Pr(>F)
## karies 1 0.3 0.3403 0.154 0.695
## Residuals 151 333.4 2.2081
summary(anova.JK)## Df Sum Sq Mean Sq F value Pr(>F)
## JK 1 4.3 4.264 1.954 0.164
## Residuals 151 329.5 2.182
summary(anova.nol)## Df Sum Sq Mean Sq F value Pr(>F)
## Residuals 152 333.8 2.196
Dengan menggunakan siknifikansi level \(\alpha = 5%\), kita bisa mengetahui bahwa H0 diterima. kedua variabel tersebut tidak memiliki hubungan yang siknifikan dengan jumlah total pengetahuan.
Kita akan melihat pada 50 data pemain NBA draft 2001-2015, pada draft
ini kita akan membandingkan Pakah ada hubungan Posisi setiap pemain dan
tahun di-draft terhadap nilai SPM. NIlai SPM adalah nilai statistik +/-.
sumber : https://github.com/fivethirtyeight/data/tree/master/nba-draft-2015
data2 = read.csv("historical_projections.csv")
head(data2)## Player Position ID Draft.Year Projected.SPM
## 1 Karl-Anthony Towns C karl-anthony-towns 2015 1.0306057
## 2 Justise Winslow SF justise-winslow 2015 0.8753290
## 3 Stanley Johnson SF stanley-johnson 2015 0.6794933
## 4 Jahlil Okafor C jahlil-okafor 2015 0.5216613
## 5 D`Angelo Russell PG d-angelo-russell 2015 0.5119667
## 6 Dakari Johnson C dakari-johnson 2015 0.4917874
## Superstar Starter Role.Player Bust
## 1 0.13476667 0.4271833 0.16308333 0.2749667
## 2 0.08352857 0.5109048 0.17676667 0.2288000
## 3 0.06780000 0.4237333 0.27850000 0.2299667
## 4 0.05871667 0.4099000 0.23553333 0.2958500
## 5 0.15203333 0.3422833 0.09658333 0.4091000
## 6 0.02134078 0.3675436 0.41757200 0.1935437
menggunakan data ini, kita akan memilih data POsition, DraftYear, dan
Projected.SPM.
sebelum itu kita akan membuat hipotesis
\(\H_0\) = tidak memiliki perbedaan varians
antara dua variabel (position dan draft year)
\(\H_1\) = terdapat perbedaan varians antara
dua variabel (position dan draft year)
data2 %>%
group_by(Position, Draft.Year)%>%
get_summary_stats(Projected.SPM, type = "mean_sd")## # A tibble: 75 × 6
## Position Draft.Year variable n mean sd
## <chr> <int> <fct> <dbl> <dbl> <dbl>
## 1 C 2001 Projected.SPM 11 -0.875 0.535
## 2 C 2002 Projected.SPM 9 -0.757 0.492
## 3 C 2003 Projected.SPM 4 -0.915 0.921
## 4 C 2004 Projected.SPM 7 -1.22 0.182
## 5 C 2005 Projected.SPM 6 -0.722 0.679
## 6 C 2006 Projected.SPM 9 -1.03 0.413
## 7 C 2007 Projected.SPM 10 -0.836 0.726
## 8 C 2008 Projected.SPM 14 -0.729 0.591
## 9 C 2009 Projected.SPM 6 -0.98 0.515
## 10 C 2010 Projected.SPM 13 -0.886 0.574
## # ℹ 65 more rows
# mengindentifikasi outlier dan menghilangkan outlier
hai = data2 %>%
group_by(Position, Draft.Year)%>%
identify_outliers(Projected.SPM)
outlier = c(hai$ID)
data2_new = data2[! data2$ID %in% outlier,]Karena banyak outlier yang extrim, maka pemain” tersebut harus dikeluarkan.
int = aov(Projected.SPM~ Position*Draft.Year, data = data2_new)
add = aov(Projected.SPM~ Position+Draft.Year, data = data2_new)
pos = aov(Projected.SPM~ Position, data = data2_new)
year = aov(Projected.SPM~ Draft.Year, data = data2_new)
nba_null = aov(Projected.SPM~ 1, data = data2_new)summary(int )## Df Sum Sq Mean Sq F value Pr(>F)
## Position 4 3.11 0.778 3.825 0.0043 **
## Draft.Year 1 6.12 6.116 30.076 5.27e-08 ***
## Position:Draft.Year 4 0.56 0.141 0.692 0.5975
## Residuals 996 202.54 0.203
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(add )## Df Sum Sq Mean Sq F value Pr(>F)
## Position 4 3.11 0.778 3.83 0.00427 **
## Draft.Year 1 6.12 6.116 30.11 5.17e-08 ***
## Residuals 1000 203.10 0.203
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(pos )## Df Sum Sq Mean Sq F value Pr(>F)
## Position 4 3.11 0.7779 3.722 0.00515 **
## Residuals 1001 209.22 0.2090
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(year)## Df Sum Sq Mean Sq F value Pr(>F)
## Draft.Year 1 5.99 5.994 29.16 8.3e-08 ***
## Residuals 1004 206.33 0.206
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(nba_null)## Df Sum Sq Mean Sq F value Pr(>F)
## Residuals 1005 212.3 0.2113
Didapat dari hasil di atas bahwa semua tes yang kita gunakan semuanya
berbeda siknifikan kecuali inteaksi. Bisa dibilang Draft.Year dan
Position mementukan nilai Projected SPM. Karena p-value kurang dari
\(\alpha = 0.05\), maka H0 ditolak,
atau terdapat perbedaan yang siknifikan antara draft.year dan position.
lalu kita akan melihat lagi untuk mengetes Type 2 yaitu false
negative.
aov_test_int <- data2_new %>%
anova_test(Projected.SPM~ Position+Draft.Year)
aov_test_int## ANOVA Table (type II tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 Position 4 1000 3.981 3.00e-03 * 0.016
## 2 Draft.Year 1 1000 30.113 5.17e-08 * 0.029
aov_test_int <- data2_new %>%
anova_test(Projected.SPM~ Position)
aov_test_int## ANOVA Table (type II tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 Position 4 1001 3.722 0.005 * 0.015
aov_test_int <- data2_new %>%
anova_test(Projected.SPM~ Draft.Year)
aov_test_int## ANOVA Table (type II tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 Draft.Year 1 1004 29.165 8.3e-08 * 0.028
yang di dapat dari hasil tes type 2 adalah secara statistik berdapat
perbedaan yang siknifikan antara tambahin, dan yang cek mandiri.
plot(add,1) # homogenitasplot(add,2) # normalitasdata2_new %>%
group_by(Position, Draft.Year)%>%
shapiro_test(Projected.SPM)## # A tibble: 75 × 5
## Position Draft.Year variable statistic p
## <chr> <int> <chr> <dbl> <dbl>
## 1 C 2001 Projected.SPM 0.903 0.203
## 2 C 2002 Projected.SPM 0.865 0.107
## 3 C 2003 Projected.SPM 0.841 0.197
## 4 C 2004 Projected.SPM 0.963 0.844
## 5 C 2005 Projected.SPM 0.918 0.491
## 6 C 2006 Projected.SPM 0.889 0.227
## 7 C 2007 Projected.SPM 0.798 0.0195
## 8 C 2008 Projected.SPM 0.865 0.0353
## 9 C 2009 Projected.SPM 0.856 0.216
## 10 C 2010 Projected.SPM 0.888 0.0927
## # ℹ 65 more rows
oneway.test(Projected.SPM~ Position+Draft.Year,data=data2_new) # no assumption of equal variances##
## One-way analysis of means (not assuming equal variances)
##
## data: Projected.SPM and Position + Draft.Year
## F = 3.1081, num df = 74.0, denom df = 263.3, p-value = 1.203e-11
dari hasil di atas, didapatkan p-value > 0,05. Artinya tidak ada bukti bahwa varians merupakan siknifikan scara statistik. Datanya homogen, normal, dan varians konstan.
library(emmeans)
cek =data2_new %>%
group_by(Position) %>%
emmeans_test(Projected.SPM ~Draft.Year, p.adjust.method = "bonferroni")
summary(cek)## Position term .y. group1
## C :105 Length:525 Length:525 Length:525
## PF:105 Class :character Class :character Class :character
## PG:105 Mode :character Mode :character Mode :character
## SF:105
## SG:105
##
## group2 df statistic p
## Length:525 Min. :931 Min. :-5.5582 Min. :0.00000
## Class :character 1st Qu.:931 1st Qu.:-1.4149 1st Qu.:0.08867
## Mode :character Median :931 Median :-0.4861 Median :0.35401
## Mean :931 Mean :-0.5433 Mean :0.38453
## 3rd Qu.:931 3rd Qu.: 0.4688 3rd Qu.:0.63275
## Max. :931 Max. : 3.7850 Max. :0.99866
## p.adj p.adj.signif
## Min. :0.0000037 Length:525
## 1st Qu.:1.0000000 Class :character
## Median :1.0000000 Mode :character
## Mean :0.9244778
## 3rd Qu.:1.0000000
## Max. :1.0000000
cek[cek$p.adj <0.05,]## # A tibble: 21 × 10
## Position term .y. group1 group2 df statistic p p.adj
## <fct> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
## 1 C Draft.Year Projected.… 2001 2015 931 -4.30 1.92e-5 2.01e-3
## 2 C Draft.Year Projected.… 2002 2015 931 -3.58 3.61e-4 3.79e-2
## 3 C Draft.Year Projected.… 2004 2015 931 -5.36 1.04e-7 1.09e-5
## 4 C Draft.Year Projected.… 2006 2015 931 -5.27 1.70e-7 1.79e-5
## 5 C Draft.Year Projected.… 2007 2015 931 -4.78 1.99e-6 2.09e-4
## 6 C Draft.Year Projected.… 2008 2015 931 -3.76 1.81e-4 1.90e-2
## 7 C Draft.Year Projected.… 2009 2015 931 -4.70 3.05e-6 3.21e-4
## 8 C Draft.Year Projected.… 2010 2015 931 -4.49 8.18e-6 8.59e-4
## 9 C Draft.Year Projected.… 2012 2015 931 -5.56 3.56e-8 3.74e-6
## 10 C Draft.Year Projected.… 2014 2015 931 -4.42 1.08e-5 1.14e-3
## # ℹ 11 more rows
## # ℹ 1 more variable: p.adj.signif <chr>
dari semua data perbedaan (525 data), yang berpengaruh siknifikan terdapat 21 jenis, yaitu seperti hasil di atas. Cara bacanya adalah posisi … memiliki perbedaan yang siknifikan/sangat siknifikan antara draft tahun … dan …
data.manova <- data.frame(
Angkatan = rep(c("2018", "2019", "2020"), 10),
IQ = c(112, 116, 120, 129, 126, 141, 97, 103, 107, 125,
113, 119, 124, 132, 131, 146, 99, 105, 111, 121,
118, 127, 132, 138, 137, 153, 104, 109, 117, 126),
Kinerja = c(61, 67, 73, 81, 77, 93, 56, 62, 67, 77,
68, 74, 79, 87, 84, 99, 62, 67, 72, 82,
71, 76, 82, 92, 88, 103, 68, 73, 79, 89)
)data.manova%>% # cek sample size
group_by(Angkatan)%>%
summarise(N = n())## # A tibble: 3 × 2
## Angkatan N
## <chr> <int>
## 1 2018 10
## 2 2019 10
## 3 2020 10
Samplenya sudah oke, n setiap angkatan kebih dari 4.
# identifikasi univariat outliers, ada outlier tetapi tidak ekrim, jadi oke saja dimasukkan
data.manova%>%
group_by(Angkatan)%>%
identify_outliers(IQ)## [1] Angkatan IQ Kinerja is.outlier is.extreme
## <0 rows> (or 0-length row.names)
data.manova%>% ## tidak ada outlier
group_by(Angkatan)%>%
identify_outliers(Kinerja)## # A tibble: 2 × 5
## Angkatan IQ Kinerja is.outlier is.extreme
## <chr> <dbl> <dbl> <lgl> <lgl>
## 1 2018 97 56 TRUE FALSE
## 2 2018 146 99 TRUE FALSE
# deteksi outlier multivariat tidak perlu lagi karena pada univariat tidak terdapat outlier
# cek normalitas univariat
data.manova%>%
group_by(Angkatan)%>%
shapiro_test(IQ, Kinerja)%>%
arrange(variable)## # A tibble: 6 × 4
## Angkatan variable statistic p
## <chr> <chr> <dbl> <dbl>
## 1 2018 IQ 0.975 0.933
## 2 2019 IQ 0.959 0.780
## 3 2020 IQ 0.933 0.473
## 4 2018 Kinerja 0.968 0.875
## 5 2019 Kinerja 0.925 0.401
## 6 2020 Kinerja 0.849 0.0566
Dari hasil test sapiro di atas didapat semua variabel, p > 0.05, maka datanya berdistribusi normal
# identify multikolinearity
data.manova %>%
cor_test(IQ, Kinerja)## # A tibble: 1 × 8
## var1 var2 cor statistic p conf.low conf.high method
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 IQ Kinerja 0.94 14.9 7.49e-15 0.882 0.973 Pearson
Dari hasil korelasi di atas didapatkan bahwa variabel dependen tidak berkorelasi dengan hasil p<0.05
# linear asumption
library(GGally)## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
##
## Attaching package: 'GGally'
## The following object is masked from 'package:emmeans':
##
## pigs
results <- data.manova %>%
select(Kinerja, IQ, Angkatan) %>%
group_by(Angkatan) %>%
doo(~ggpairs(.) + theme_bw(), result = "plots")
results$plots## [[1]]
##
## [[2]]
##
## [[3]]
Dari hasil grafik di atas, didapat bahwa datanya linear.
box_m(data.manova[, c("IQ", "Kinerja")], data.manova$Angkatan) # uji homogenitas kovarian (p-value>0.05, terdapat homogenitas kovarian)## # A tibble: 1 × 4
## statistic p.value parameter method
## <dbl> <dbl> <dbl> <chr>
## 1 0.556 0.997 6 Box's M-test for Homogeneity of Covariance Matric…
data.manova%>%
gather(key = "variable", value = "value", IQ,Kinerja) %>%
group_by(variable) %>%
levene_test(value ~ Angkatan) # didapatkan hasil tidak homogen antar varians (p-value>0.05)## Warning: There were 2 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `data = map(.data$data, .f, ...)`.
## Caused by warning in `leveneTest.default()`:
## ! group coerced to factor.
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 1 remaining warning.
## # A tibble: 2 × 5
## variable df1 df2 statistic p
## <chr> <int> <int> <dbl> <dbl>
## 1 IQ 2 27 0.0532 0.948
## 2 Kinerja 2 27 0.0678 0.935
Hasil yang didapatkan bahwa data ini kovarian homogen dan tidak homogen antar varians. maka dari itu terdapat asumsi yang tidak terpenuhi. Oleh karena itu kita akan lanjut, tetapi perlu diingat bahwa hasil MANOVA ini akan tidak terlalu akurat.
model1<- manova(cbind(Kinerja, IQ) ~ Angkatan, data.manova)
summary(model1)## Df Pillai approx F num Df den Df Pr(>F)
## Angkatan 2 0.057994 0.40315 4 54 0.8055
## Residuals 27
model2<- lm(cbind(Kinerja, IQ) ~ Angkatan, data.manova)
Manova(model2, test.statistic = "Pillai")##
## Type II MANOVA Tests: Pillai test statistic
## Df test stat approx F num Df den Df Pr(>F)
## Angkatan 2 0.057994 0.40315 4 54 0.8055
Dari hasil codingan di atas, tidak terdapat perbedaan yang siknifikan antara kinerja dan IQ. P-value > 0,05, maka H0 diterima. kedua variabel tersebut juga tidak berbeda siknifikan antar angkatan. # Referensi
Referensi : + https://bookdown.org/BaktiSiregar/data-science-for-beginners-part-2/12-RM-ANOVA.html + https://www.statology.org/left-tailed-test-vs-right-tailed-test/#:~:text=There%20are%20three%20different%20types,hypothesis%20contains%20the%20“%3E”%20sign + https://www.scribbr.com/statistics/type-i-and-type-ii-errors/ + https://oeis.org/wiki/List_of_LaTeX_mathematical_symbols + https://stackoverflow.com/questions/13012509/how-to-delete-rows-from-a-data-frame-based-on-an-external-list-using-r#:~:text=You%20can%20use%20also%20use%20match%20if%20there,rows%20that%20exactly%20matches%20your%20NAMES_list%20with%20main_data%24NAMES. + https://github.com/fivethirtyeight/data + data manova: data dari forms psikologi yang menanyakan tentang cara belajar.