Last active
October 19, 2021 08:44
-
-
Save JfrAziz/7c9a55c0abcf90c5c501feb3d956b2e9 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# uji satu sampel | |
ujiSatuSampel <- function(data_1, miu, sigma = NULL, alpha = 0.05){ | |
X_bar = apply(data_1, 2, mean) | |
n = nrow(data_1) | |
p = ncol(data_1) | |
hasSigma = !is.null(sigma) | |
if(length(miu) != p) stop("data tidak sama") | |
if (!hasSigma) sigma = cov(data_1) | |
stat = n*(t(X_bar - miu)%*%solve(sigma)%*%(X_bar - miu)) | |
if (hasSigma) { | |
criticalPoint = qchisq((1-alpha), p) | |
} else { | |
stat = ((n-p)/(p*(n-1)))*stat | |
criticalPoint = qf((1-alpha),p,n-p) | |
} | |
cat("\nStatistics : ", stat) | |
cat("\nCritical : ", criticalPoint) | |
if (stat >= criticalPoint) { | |
cat("\n::Reject null hyphothesis with alpha",alpha) | |
} else { | |
cat("\n::Failed to reject null hyphothesis with alpha",alpha) | |
} | |
} | |
# uji dua sampel independet | |
ujiDuaSampel <- function(data_1, data_2, alpha = 0.05, isSigmaEqual = TRUE){ | |
if(ncol(data_1) != ncol(data_2)) stop("number of column different") | |
p = ncol(data_1) | |
n_1 = nrow(data_1) | |
n_2 = nrow(data_2) | |
X_bar_1 = apply(data_1, 2, mean) | |
X_bar_2 = apply(data_2, 2, mean) | |
# asumsi varians sama | |
sig_1 = cov(data_1) | |
sig_2 = cov(data_2) | |
if(isSigmaEqual){ | |
cat("Asumsi varians sama") | |
S_pool = ((n_1 - 1)*sig_1 + (n_2 - 1) *sig_2)/(n_1 + n_2 - 2) | |
stats = ((n_1 * n_2) / (n_1 + n_2))* (t(X_bar_1 - X_bar_2)%*%solve(S_pool)%*%(X_bar_1 - X_bar_2)) | |
} else { | |
cat("Asumsi varians tidak sama") | |
S_pool = sig_1 / n_1 + sig_2 / n_2 | |
stats = (t(X_bar_1 - X_bar_2)%*%solve(S_pool)%*%(X_bar_1 - X_bar_2)) | |
} | |
# convert to F | |
stats = ((n_1+n_2-p-1)/((n_1+n_2-2)*p))*stats | |
criticalPoint = qf((1-alpha),p,n_1+n_2-p-1) | |
cat("\nStatistics : ", stats) | |
cat("\nCritical (F) : ", criticalPoint) | |
if (stats >= criticalPoint) { | |
cat("\n::Reject null hyphothesis with alpha",alpha) | |
} else { | |
cat("\n::Failed to reject null hyphothesis with alpha",alpha) | |
} | |
} | |
# uji dua sampel dependent | |
ujiDuaSampelDependen <- function(data_1, data_2, alpha = 0.05){ | |
data = data_1 - data_2 | |
n = nrow(data) | |
p = ncol(data) | |
avg = apply(data_1 - data_2, 2, mean) | |
S_d = cov(data) | |
T_squre = n*t(avg)%*%solve(S_d)%*%avg | |
F_obs = ((n-p)/(p*(n-1)))*T_squre | |
criticalPoint = qf((1-alpha),p,n-p) | |
cat("\nF obs : ", F_obs) | |
cat("\nCritical : ", criticalPoint) | |
if (F_obs >= criticalPoint) { | |
cat("\n::Reject null hyphothesis with alpha",alpha) | |
} else { | |
cat("\n::Failed to reject null hyphothesis with alpha",alpha) | |
} | |
} | |
# versi gabungan simpel | |
ujiSampel <- function(data_1, data_2 = NULL, miu = NULL, sigma = NULL, alpha = 0.05, type = "independent", isSigmaEqual = TRUE){ | |
if(!is.null(data_2) && type == "independent"){ | |
cat("\n2 populasi test independent") | |
return(ujiDuaSampel(data_1, data_2, alpha = alpha, isSigmaEqual = isSigmaEqual)) | |
} | |
if(!is.null(data_2) && type == "dependent"){ | |
cat("\n2 populasi test dependent") | |
return(ujiDuaSampelDependen(data_1, data_2, alpha)) | |
} | |
if(is.null(data_2)){ | |
cat("\n1 populasi test") | |
return(ujiSatuSampel(data_1, miu, sigma, alpha)) | |
} | |
return(NULL) | |
} | |
ujiDuaSampelModified <- function(sd_1, r_1, X_bar_1, n_1, sd_2, r_2, X_bar_2, n_2, p, alpha = 0.05, isSigmaEqual = TRUE){ | |
sig_1 = diag(sd_1) %*% r_1 %*% diag (sd_1) | |
cat(sig_1) | |
sig_2 = diag(sd_2) %*% r_2 %*% diag (sd_2) | |
if(isSigmaEqual){ | |
cat("\nAsumsi varians sama\n") | |
S_pool = ((n_1 - 1)*sig_1 + (n_2 - 1)*sig_2)/(n_1 + n_2 - 2) | |
stats = (t(X_bar_1 - X_bar_2)%*%solve(S_pool)%*%(X_bar_1 - X_bar_2)) | |
stats = ((n_1 * n_2) / (n_1 + n_2))*stats | |
} else { | |
cat("\nAsumsi varians tidak sama\n") | |
S_pool = sig_1 / n_1 + sig_2 / n_2 | |
stats = (t(X_bar_1 - X_bar_2)%*%solve(S_pool)%*%(X_bar_1 - X_bar_2)) | |
} | |
# convert to F | |
stats = ((n_1+n_2-p-1)/((n_1+n_2-2)*p))*stats | |
criticalPoint = qf((1-alpha),p,n_1+n_2-p-1) | |
cat("\nF obs : ", stats) | |
cat("\nCritical (F) : ", criticalPoint) | |
if (stats >= criticalPoint) { | |
cat("\n::Reject null hyphothesis with alpha",alpha) | |
} else { | |
cat("\n::Failed to reject null hyphothesis with alpha",alpha) | |
} | |
} | |
plotKontur <- function(data, x = NaN, alpha = 0.05){ | |
if (is.matrix(data) && ncol(data) != 2) stop("matrix bukan bivariat") | |
if (is.data.frame(data) && length(data) != 2) stop("data bukan bivariat") | |
library(mixtools) | |
plot(data, xlab = "X1", ylab = "X2") | |
miu = apply(data, 2, mean) | |
sigma = cov(data) | |
ellipse(miu, sigma, alpha, col = "red") | |
if(!is.na(x) && length(x) == 2){ | |
points(x[1], x[2], pch=19, cex=1, col="blue") | |
} | |
} | |
p = 3 | |
n_1 = 20 | |
r_1 = matrix(c(1.00, 0.79, 0.84, | |
0.79, 1.00, 0.84, | |
0.84, 0.84, 1.00), nrow =3) | |
sd_1 = c(31.30, 18.86, 19.12) | |
Y_1 = c(1433.52, 860.22, 2478.05) | |
n_2 = 20 | |
r_2 = matrix(c(1.00, 0.54, 0.57, | |
0.79, 1.00, 0.78, | |
0.84, 0.78, 1.00), nrow = 3) | |
sd_2 = c(28.60, 18.87, 28.77) | |
Y_2 = c(1217.16, 691.04, 2394.62) | |
ujiDuaSampelModified(sd_1, r_1, Y_1, n_1, sd_2, r_2, Y_2, n_2, p) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment