Skip to content

Instantly share code, notes, and snippets.

@JfrAziz
Last active October 19, 2021 08:44
Show Gist options
  • Save JfrAziz/7c9a55c0abcf90c5c501feb3d956b2e9 to your computer and use it in GitHub Desktop.
Save JfrAziz/7c9a55c0abcf90c5c501feb3d956b2e9 to your computer and use it in GitHub Desktop.
# 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