R програм дээр статистик шинжилгээ хийх
R програм дээр статистик шинжилгээ хийх талаарх анхны ойлголт өгөх зорилготой видео хичээл
Статистикийн R програм дээр хэрхэн яаж ажиллах талаар тус програмыг сонирхогчдод анхны ойлголт өгөх мөн олон нийтэд R програмыг сурталчлан таниулах үүднээс энэхүү видео хичээлийг бэлдлээ. Видео хичээлд регрессийн шинжилгээ хийх, зарим нэг таамаглал шалгах болон тайлбарлагч статистик бодох, өгөгдөл экспортлох болон импортлох зэрэг зүйлс тодорхой жишээ болон дэлгэрэнгүй тайлбартай хамт багтсан.
R програм буюу R хэлийг нарийн судалж, мэргэжлийн түвшинд эзэмшихийг хүсвэл Г.Махгал, Ш.Мөнгөнсүх нарын "Статистик програмчлалын R хэл" номыг үзнэ үү.
Мөн тус видео хичээл дээр бичсэн кодыг текст байдлаар дор хуулж орууллаа.
# ---------------------------------------
# Шугаман загвар
# ---------------------------------------
# Y = 3 + 2 * X1 - 3 * X2 + U
# ---------------------------------------
# Түүврийн хэмжээ
# ---------------------------------------
n <- 1000
# ---------------------------------------
# Өгөгдөл
# ---------------------------------------
set.seed(17)
# үл хамааран хувьсагчид
X <- matrix( # матриц
data = rnorm( # хэвийн тархалттай санамсаргүй тоонууд
n = n * 2,
mean = 1,
sd = 2
),
ncol = 2, byrow = TRUE
)
X1 <- X[,1]
X2 <- X[,2]
# үлдэгдэл
U <- rnorm(n = n)
# хамааран хувьсагч
Y <- 3 + 2 * X1 - 3 * X2 + U
# ---------------------------------------
# Нөхцөл шалгах
# ---------------------------------------
# үл хамааран хувьсагчид хамааралгүй болох нь
cor.test(x = X1, y = X2) # тэг таамаглал: хамааралгүй
# үлдэгдэл
cor(x = X, y = U)
# тайлбарлах хувьсагчид хэвийн тархалттай эсэх
ks.result.1 <- ks.test(x = X1, y = pnorm, mean = 1, sd = 2)
ks.result.2 <- apply(X = X, MARGIN = 2, FUN = ks.test, y = pnorm, mean = 1, sd = 2)
all.equal(target = ks.result.1, current = ks.result.2[[1]])
test <- function (X) {
ks.test(x = X, y = pnorm, mean = 1, sd = 2)
}
apply(X = X, MARGIN = 2, FUN = test)
apply(X = X, MARGIN = 2, FUN = function (X) {
ks.test(x = X, y = pnorm, mean = 1, sd = 2)
})
for (i in 1:2) {
print(ks.test(x = X[,i], y = pnorm, mean = 1, sd = 2))
}
# ---------------------------------------
# Өгөгдөл импортлох болон экспортлох
# ---------------------------------------
# өгөгдлөө датафреймд оруулах
D <- data.frame(Y, X1, X2)
head(D) # эхний хэдэн мөр
# өгөгдөл экспортлох
write.csv(x = D, file = "mydata.csv", row.names = FALSE)
# бүх объект устгаж зайлуулах
rm(list = ls())
# файлаас өгөгдөл импортлох
D <- read.csv(file = "mydata-from-spreadsheet.csv")
head(D)
# ---------------------------------------
# Регрессийн шинжилгээ
# ---------------------------------------
fit <- lm(formula = Y ~ X1 + X2, data = D)
summary(fit)
sd(residuals(fit))
sd(D$Y)
# ашиглах багц
install.packages("car")
# малтиколлинеар
cor(x = D[,-1])
car::vif(fit)
# хетероскедастик
car::ncvTest(fit) # тэг таамаглал: үлдэгдлийн дисперс тогтмол
# автокорреляц
car::durbinWatsonTest(fit, max.lag = 5) # тэг таамаглал: автокорреляц тэгтэй тэнцүү
# прогноз
predict(object = fit, newdata = data.frame(X1 = c(0, 1), X2 = c(0, 0)))