통계 > 분할표
Statistics > Contingency tables

Linux 사례 (MX 21)

분석대상인 데이터셋에 요인형 변수가 한개 있거나, 하나도 없는 경우 분할표 메뉴의 오른쪽에 있는 <이원표>, <다원표> 기능은 불활성 음영 표시로 나타난다. 두개 이상의 요인형 변수가 있는 경우, 예를 들어 car 패키지에 포함된 Moore 데이터셋이 활성 데이터셋이 되는 경우 불활성 음영 표시가 사라진다.

Linux 사례 (MX21)

요인형 변수가 세개 이상 있는 경우, <다원표> 까지 활성화된다. 아래의 화면을 보면, partner.status, fcatetory 두개의 변수가 요인(factor)형이다. <이원표>는 활성화된 반면에, <다원표> 기능이 아직 활성화되지 않았다면, 요인형 변수가 두개 뿐인 데이터셋임을 간접적으로 알려준다.

Linux 사례 (MX21)

'Statistics > Contigency tables' 카테고리의 다른 글

2. Multi-way tables...  (0) 2022.06.28
3. Enter and analyze two-way table...  (0) 2022.06.28
1. Two-way table...  (0) 2022.02.14

통계 > 분할표 > 이원표...
Statistics > Contingency tables > Two-way table...

Linux 사례 (MX 21)

요인형 변수를 두개 이상 가지고 있는 데이터셋이 활성화되었다면, '통계 > 분할표 > 이원표...' 메뉴 기능을 이용할 수 있다.

Linux 사례 (MX 21)


두개 이상의 요인형 변수를 가지고 있는 Moore 데이터셋을 활성화시키면, <이원표>의 음영이 사라지고 사용할 수 있는 기능이 된다.

Linux 사례 (MX 21)

행 변수와 열 변수에 요인형 변수 하나씩을 선택한다.

Linux 사례 (MX 21)
Linux 사례 (MX 21)

데이터 창과 함께 통계 창이 있다. 통계 창을 선택하면 다음과 같은 화면에 다양한 선택 기능을 선택할 수 있다. 다른 선택으로 출력 내용의 변화를 주지 않을 경우, 데이터 창으로 돌아가서 예(OK) 버튼을 누른다.

Linux 사례 (MX 21)

다음과 같은 출력물을 볼 수 있다. 행 변수에 partner.status, 열 변수에 fcategory를 선택한 경우의 출력물이다.

Linux 사례 (MX 21)

행 변수에 fcategory, 열 변수에 partner.status를 선택한 경우의 출력물이다.

Linux 사례 (MX 21)

프롬프트의 입력 스크립트를 살펴보면, xtabs() 함수를 사용하는 것이 보인다.


?xtabs  # stats 패키지의 xtabs 도움말 보기

## 'esoph' has the frequencies of cases and controls for all levels of
## the variables 'agegp', 'alcgp', and 'tobgp'.
xtabs(cbind(ncases, ncontrols) ~ ., data = esoph)
## Output is not really helpful ... flat tables are better:
ftable(xtabs(cbind(ncases, ncontrols) ~ ., data = esoph))
## In particular if we have fewer factors ...
ftable(xtabs(cbind(ncases, ncontrols) ~ agegp, data = esoph))

## This is already a contingency table in array form.
DF <- as.data.frame(UCBAdmissions)
## Now 'DF' is a data frame with a grid of the factors and the counts
## in variable 'Freq'.
DF
## Nice for taking margins ...
xtabs(Freq ~ Gender + Admit, DF)
## And for testing independence ...
summary(xtabs(Freq ~ ., DF))

## with NA's
DN <- DF; DN[cbind(6:9, c(1:2,4,1))] <- NA
DN # 'Freq' is missing only for (Rejected, Female, B)
tools::assertError(# 'na.fail' should fail :
     xtabs(Freq ~ Gender + Admit, DN, na.action=na.fail), verbose=TRUE)
op <- options(na.action = "na.omit") # the "factory" default
(xtabs(Freq ~ Gender + Admit, DN) -> xtD)
noC <- function(O) `attr<-`(O, "call", NULL)
ident_noC <- function(x,y) identical(noC(x), noC(y))
stopifnot(exprs = {
  ident_noC(xtD, xtabs(Freq ~ Gender + Admit, DN, na.action = na.omit))
  ident_noC(xtD, xtabs(Freq ~ Gender + Admit, DN, na.action = NULL))
})

xtabs(Freq ~ Gender + Admit, DN, na.action = na.pass)
## The Female:Rejected combination has NA 'Freq' (and NA prints 'invisibly' as "")
(xtNA <- xtabs(Freq ~ Gender + Admit, DN, addNA = TRUE)) # ==> count NAs
## show NA's better via  na.print = ".." :
print(xtNA, na.print= "NA")


## Create a nice display for the warp break data.
warpbreaks$replicate <- rep_len(1:9, 54)
ftable(xtabs(breaks ~ wool + tension + replicate, data = warpbreaks))

### ---- Sparse Examples ----

if(require("Matrix")) withAutoprint({
 ## similar to "nlme"s  'ergoStool' :
 d.ergo <- data.frame(Type = paste0("T", rep(1:4, 9*4)),
                      Subj = gl(9, 4, 36*4))
 xtabs(~ Type + Subj, data = d.ergo) # 4 replicates each
 set.seed(15) # a subset of cases:
 xtabs(~ Type + Subj, data = d.ergo[sample(36, 10), ], sparse = TRUE)

 ## Hypothetical two-level setup:
 inner <- factor(sample(letters[1:25], 100, replace = TRUE))
 inout <- factor(sample(LETTERS[1:5], 25, replace = TRUE))
 fr <- data.frame(inner = inner, outer = inout[as.integer(inner)])
 xtabs(~ inner + outer, fr, sparse = TRUE)
})

'Statistics > Contigency tables' 카테고리의 다른 글

2. Multi-way tables...  (0) 2022.06.28
3. Enter and analyze two-way table...  (0) 2022.06.28
Contingency tables  (0) 2022.02.14

통계 > 요약 > 정규성 검정...

Statistics > Summaries > Test of normality...

 

Linux 사례 (Ubuntu 18.04)

수치형(numeric, integer) 변수들 중에서 하나를 선택한다. 기본 설정에 Shapiro-Wilk의 정규성 검정법이 선택되어 있다. 수입(연봉)의 사례들이 정규 분포를 이루고 있는가를 확인하고자, 변수 income을 선택하고 예(OK) 버튼을 누른다.

Linux 사례 (Ubuntu 18.04)

normalityTest()를 사용한다.

Linux 사례 (Ubuntu 18.04)

 


normalityTest(~education, test="shapiro.test", data=Prestige)

Linux 사례 (MX 21)


?normalityTest  # RcmdrMisc 패키지의 normalityTest 도움말 보기

data(Prestige, package="car")
  with(Prestige, normalityTest(income))
  normalityTest(income ~ type, data=Prestige, test="ad.test")
  normalityTest(~income, data=Prestige, test="pearson.test", n.classes=5)

'Statistics > Summaries' 카테고리의 다른 글

9. Transform toward normality...  (0) 2022.06.19
7. Correlation test...  (0) 2022.02.13
6. Correlation matrix...  (0) 2022.02.13
5. Table of Statistics...  (0) 2022.02.13
4. Count missing observations  (0) 2022.02.13

통계 > 요약 > 상관 검정...
Statistics > Summaries > Correlation test...

Linux 사례 (Ubuntu 18.04)

상관 검정은 두 변수를 구성하는 사례값들 사이에 어떤 방향의 관계성이 있는지를 통계학적으로 확인하고자 할 때 사용한다. 아래는Prestige 데이터셋에서 교육수준과 수입(연봉) 사이에 어떤 관계성이 있는지를 확인하고자 한다. education과 income 변수를 선택하고, 예(OK) 버튼을 누른다.

Linux 사례 (Ubuntu 18.04)

상관의 유형 중에서 Pearson product-moment (피어슨 적률상관), 대립 가설에는 양측이 기본으로 설정되어 있다. 이 설정을 바탕으로 상관 검증의 결과를 출력하면 아래와 같다:

Linux 사례 (Ubuntu 18.04)

cor.test() 함수를 활용한다.


?cor.test  # stats 패키지의 cor.test 도움말 보기

## Hollander & Wolfe (1973), p. 187f.
## Assessment of tuna quality.  We compare the Hunter L measure of
##  lightness to the averages of consumer panel scores (recoded as
##  integer values from 1 to 6 and averaged over 80 such values) in
##  9 lots of canned tuna.

x <- c(44.4, 45.9, 41.9, 53.3, 44.7, 44.1, 50.7, 45.2, 60.1)
y <- c( 2.6,  3.1,  2.5,  5.0,  3.6,  4.0,  5.2,  2.8,  3.8)

##  The alternative hypothesis of interest is that the
##  Hunter L value is positively associated with the panel score.

cor.test(x, y, method = "kendall", alternative = "greater")
## => p=0.05972

cor.test(x, y, method = "kendall", alternative = "greater",
         exact = FALSE) # using large sample approximation
## => p=0.04765

## Compare this to
cor.test(x, y, method = "spearm", alternative = "g")
cor.test(x, y,                    alternative = "g")

## Formula interface.
require(graphics)
pairs(USJudgeRatings)
cor.test(~ CONT + INTG, data = USJudgeRatings)

'Statistics > Summaries' 카테고리의 다른 글

9. Transform toward normality...  (0) 2022.06.19
8. Test of normality...  (0) 2022.02.13
6. Correlation matrix...  (0) 2022.02.13
5. Table of Statistics...  (0) 2022.02.13
4. Count missing observations  (0) 2022.02.13

통계 > 요약 > 상관 행렬...
Statistics > Summaries > Correlation matrix...

Linux 사례 (Ubuntu 18.04)

상관 행렬은 두개 이상의 변수를 선택해야 한다. Prestige 데이터셋에서 교육수준과 연봉(수입)의 관계에 대한 관심에서 이 두 변수를 선택하고, 예(OK) 버튼을 누른다.

Linux 사례 (Ubuntu 18.04)

 

Linux 사례 (Ubuntu 18.04)

출력 창을 보면, cor() 함수가 사용되었음을 알 수 있다.


?rcorr.adjust  #RcmdrMisc 패키지의 rcorr.adjust 도움말 보기

if (require(car)){
    data(Mroz)
    print(rcorr.adjust(Mroz[,c("k5", "k618", "age", "lwg", "inc")]))
    print(rcorr.adjust(Mroz[,c("k5", "k618", "age", "lwg", "inc")], type="spearman"))
    }

'Statistics > Summaries' 카테고리의 다른 글

8. Test of normality...  (0) 2022.02.13
7. Correlation test...  (0) 2022.02.13
5. Table of Statistics...  (0) 2022.02.13
4. Count missing observations  (0) 2022.02.13
3. Frequency distributions...  (0) 2022.02.13

통계 > 요약 > 통계표...
Statistics > Summaries > Table of statistics...

Linux 사례 (Ubuntu 18.04)

통계표(Table of statistics)는 요인(factor) 변수 유형별로 수치형(numeric, integer) 변수의 통계량을 계산하여 출력한다. Prestige 데이터셋에서 직업 유형의 type 변수를 요인에서 선택하고, 직업 유형별로 권위(prestige)의 통계량 중에서 기본 설정으로 선택된 평균값의 통계표를 선택하고, 예(OK) 버튼을 누른다.

Linux 사례 (Ubuntu 18.04)
Linux 사례 (Ubuntu 18.04)

직업 유형(bc, prof, wc)별로 평균값을 계산하여 출력한다. 출력창을 보면 Tapply() 함수를 사용함을 알 수 있다.


?Tapply  # car 패키지의 Tapply 도움말 보기

Tapply(conformity ~ partner.status + fcategory, mean, data=Moore)
Tapply(conformity ~ partner.status + fcategory, mean, data=Moore, 
    trim=0.2)

Moore[1, 2] <- NA
Tapply(conformity ~ partner.status + fcategory, mean, data=Moore)
Tapply(conformity ~ partner.status + fcategory, mean, data=Moore, 
  na.rm=TRUE)
Tapply(conformity ~ partner.status + fcategory, mean, data=Moore, 
  na.action=na.omit)  # equivalent
remove("Moore")

'Statistics > Summaries' 카테고리의 다른 글

7. Correlation test...  (0) 2022.02.13
6. Correlation matrix...  (0) 2022.02.13
4. Count missing observations  (0) 2022.02.13
3. Frequency distributions...  (0) 2022.02.13
2. Numeric summaries...  (0) 2022.02.13

통계 > 요약 > 관측 결측치 셈하기
Statistics > Summaries > Count missing observations

Linux 사례 (Ubuntu 18.04)

데이터셋을 구성하는 사례에 값이 입력되지 않은 결측치가 있는 경우가 있다. 어떤 변수에 관측값이 없는 결측치가 있는지를 확인할 때 사용하는 기능이다.

Linux 사례 (Ubuntu 18.04)


Prestige 데이터셋의 type 변수에 결측치가 4개가 있음을 확인한다.


?sapply  # base 패키지의  sapply 도움말 보기

require(stats); require(graphics)

x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE))
# compute the list mean for each list element
lapply(x, mean)
# median and quartiles for each list element
lapply(x, quantile, probs = 1:3/4)
sapply(x, quantile)
i39 <- sapply(3:9, seq) # list of vectors
sapply(i39, fivenum)
vapply(i39, fivenum,
       c(Min. = 0, "1st Qu." = 0, Median = 0, "3rd Qu." = 0, Max. = 0))

## sapply(*, "array") -- artificial example
(v <- structure(10*(5:8), names = LETTERS[1:4]))
f2 <- function(x, y) outer(rep(x, length.out = 3), y)
(a2 <- sapply(v, f2, y = 2*(1:5), simplify = "array"))
a.2 <- vapply(v, f2, outer(1:3, 1:5), y = 2*(1:5))
stopifnot(dim(a2) == c(3,5,4), all.equal(a2, a.2),
          identical(dimnames(a2), list(NULL,NULL,LETTERS[1:4])))

hist(replicate(100, mean(rexp(10))))

## use of replicate() with parameters:
foo <- function(x = 1, y = 2) c(x, y)
# does not work: bar <- function(n, ...) replicate(n, foo(...))
bar <- function(n, x) replicate(n, foo(x = x))
bar(5, x = 3)

'Statistics > Summaries' 카테고리의 다른 글

6. Correlation matrix...  (0) 2022.02.13
5. Table of Statistics...  (0) 2022.02.13
3. Frequency distributions...  (0) 2022.02.13
2. Numeric summaries...  (0) 2022.02.13
1. Active Data set  (0) 2022.02.13

통계 > 요약 > 빈도 분포...
Statistics > Summaries > Frequency distributions...

Linux 사례 (Ubuntu 18.04)
Linux 사례 (Ubuntu 18.04)


type 변수를 선택하고 예(OK)를 누른다. Prestige 데이터셋의 type 변수의 빈도를 보는 명령문이 다음과 같이 입력창에 기록되고 출력창에 빈도 정보가 출력된다:

Linux 사례 (Ubuntu 18.04) - 입력 창 기록
Linux 사례 (Ubuntu 18.04) - 출력창 출력결과


더보기

Q1> Prestige의 변수는 여러개가 있습니다. 그중에서 왜 type만 선택 창에 나오나요?

 

type 변수는 factor 유형입니다. 빈도는 factor 유형의 변수만 셀 수 있기 때문입니다.

> str(Prestige) # Prestige 데이터셋의 변수 유형 살펴보기


?table  # base 패키지의 table 도움말 보기

require(stats) # for rpois and xtabs
## Simple frequency distribution
table(rpois(100, 5))
## Check the design:
with(warpbreaks, table(wool, tension))
table(state.division, state.region)

# simple two-way contingency table
with(airquality, table(cut(Temp, quantile(Temp)), Month))

a <- letters[1:3]
table(a, sample(a))                    # dnn is c("a", "")
table(a, sample(a), deparse.level = 0) # dnn is c("", "")
table(a, sample(a), deparse.level = 2) # dnn is c("a", "sample(a)")

## xtabs() <-> as.data.frame.table() :
UCBAdmissions ## already a contingency table
DF <- as.data.frame(UCBAdmissions)
class(tab <- xtabs(Freq ~ ., DF)) # xtabs & table
## tab *is* "the same" as the original table:
all(tab == UCBAdmissions)
all.equal(dimnames(tab), dimnames(UCBAdmissions))

a <- rep(c(NA, 1/0:3), 10)
table(a)                 # does not report NA's
table(a, exclude = NULL) # reports NA's
b <- factor(rep(c("A","B","C"), 10))
table(b)
table(b, exclude = "B")
d <- factor(rep(c("A","B","C"), 10), levels = c("A","B","C","D","E"))
table(d, exclude = "B")
print(table(b, d), zero.print = ".")

## NA counting:
is.na(d) <- 3:4
d. <- addNA(d)
d.[1:7]
table(d.) # ", exclude = NULL" is not needed
## i.e., if you want to count the NA's of 'd', use
table(d, useNA = "ifany")

## "pathological" case:
d.patho <- addNA(c(1,NA,1:2,1:3))[-7]; is.na(d.patho) <- 3:4
d.patho
## just 3 consecutive NA's ? --- well, have *two* kinds of NAs here :
as.integer(d.patho) # 1 4 NA NA 1 2
##
## In R >= 3.4.0, table() allows to differentiate:
table(d.patho)                   # counts the "unusual" NA
table(d.patho, useNA = "ifany")  # counts all three
table(d.patho, exclude = NULL)   #  (ditto)
table(d.patho, exclude = NA)     # counts none

## Two-way tables with NA counts. The 3rd variant is absurd, but shows
## something that cannot be done using exclude or useNA.
with(airquality,
   table(OzHi = Ozone > 80, Month, useNA = "ifany"))
with(airquality,
   table(OzHi = Ozone > 80, Month, useNA = "always"))
with(airquality,
   table(OzHi = Ozone > 80, addNA(Month)))

'Statistics > Summaries' 카테고리의 다른 글

6. Correlation matrix...  (0) 2022.02.13
5. Table of Statistics...  (0) 2022.02.13
4. Count missing observations  (0) 2022.02.13
2. Numeric summaries...  (0) 2022.02.13
1. Active Data set  (0) 2022.02.13

통계 > 요약 > 수치적 요약...
Statistics > Summaries > Numeric summaries...

Linux 사례 (Ubuntu 18.04)


<수치적 요약...> 메뉴를 선택하면 하위 창이 나온다:

Linux 사례 (Ubunt 18.04)


데이터 창과 통계 창이 있다. 통계 창을 보려면 데이터 옆에 있는 통계 창을 선택하면 된다:

Linux 사례 (Ubuntu 18.04)


다시 데이터 창으로 와서 prestige 라는 변수의 수치적 요약 정보를 보고자 한다. prestige 변수를 선택하고, 오른쪽 아래의 예(OK) 버튼을 선택한다:

Linux 사례 (Ubuntu 18.04)


입력 창과 출력 창을 살펴보자. 통계 창의 선택사항들에 변경을 주지 않은 상태에서 Prestige 라는 데이터셋의 prestige 변수의 수치적 정보는 다음과 같다:

Linux 사례 (Ubuntu 18.04)


?numSummary  # RcmdrMisc 패키지의 numSummary 도움말 보기

if (require("car")){
    data(Prestige)
    Prestige[1, "income"] <- NA
    print(numSummary(Prestige[,c("income", "education")], 
    	statistics=c("mean", "sd", "quantiles", "cv", "skewness", "kurtosis")))
    print(numSummary(Prestige[,c("income", "education")], groups=Prestige$type))
    remove(Prestige)
}

'Statistics > Summaries' 카테고리의 다른 글

6. Correlation matrix...  (0) 2022.02.13
5. Table of Statistics...  (0) 2022.02.13
4. Count missing observations  (0) 2022.02.13
3. Frequency distributions...  (0) 2022.02.13
1. Active Data set  (0) 2022.02.13

통계 > 요약 > 활성 데이터셋
Statistics > Summaries > Active Data set

Linux 사례 (Ubuntu 18.04)


Prestige라는 데이터셋을 불러와서 자료처리와 분석용으로 활성화시켰다고 가정하자. Prestige 데이터셋의 요약정보를 보고자 할때, <활성 데이터셋> 기능을 선택한다:

data(Prestige)
summary(Prestige)

Linux 사례 (Ubuntu 18.04)


?summary  # base 패키지의 summary 도움말 보기

summary(attenu, digits = 4) #-> summary.data.frame(...), default precision
summary(attenu $ station, maxsum = 20) #-> summary.factor(...)

lst <- unclass(attenu$station) > 20 # logical with NAs
## summary.default() for logicals -- different from *.factor:
summary(lst)
summary(as.factor(lst))

'Statistics > Summaries' 카테고리의 다른 글

6. Correlation matrix...  (0) 2022.02.13
5. Table of Statistics...  (0) 2022.02.13
4. Count missing observations  (0) 2022.02.13
3. Frequency distributions...  (0) 2022.02.13
2. Numeric summaries...  (0) 2022.02.13

+ Recent posts