데이터분석 공부하기
[가정] 모수적 검정- 1) 정규성(normality) 본문
- 모수적 검정(Parametric test) : 모수 추정을 위한 가정 검정
- 분포의 정규성(normality) : data in each group should be normally distributed
- 분산의 동질성(homogeneity) : data in each group should have approx. equal variance;
표본들의 분산이 동일한 모집단에서 비롯되었음 - 구간 척도(interval data) : 적어도 interval data로 측정되어야 한다.
- 독립성 : 1) independent groups : data in each group should be randomly and independently sampled from the population, 2) repeated measure : behaviors of each participants should be independent(not influenced by one another), 3) regression : errors in the regression models are not correlated
- R packages : car, ggplot2, pastecs, psych
분포의 정규성 가정
언제 정규성을 검정하는가?
1) 여러 통계적 검정(ex, t-test)에서는 표집분포가 정규분포라고 가정하나, 표집분포에 직접 접근할 수 없어,
표본분포가 정규분포인지 확인하여 표집분포가 정규분포라고 가정
2)회귀/일반성형모형 : 일반성형모형의 오차들이 정규분포를 따른 다고 가정
정규성 검증법
도수분포 : 눈으로 확인
1)히스토그램과 정규 곡선 (normal curve)
- 사용 함수 : geom_histrogram(aes(y=..density..)), stat_function
- histogram(aes(y=..density..)는 밀도분포인데, 정규곡석을 그리기 위함
#day1 histogram
f.hist.d1 <- ggplot(festival.data, aes(day1)) + theme(legend.position = "none") +
geom_histogram(aes(y=..density..), color = "black", fill = "white") +
labs(x = "Hygiene score on day 1", y = "Density")
f.hist.d1
#day1 정규분포 곡선 (위 그래프와 하나로 합친 뒤 출력 가능)
f.hist.d1 + stat_function(fun = dnorm,
args = list(mean = mean(festival.data$day1, na.rm = TRUE), sd = sd(festival.data$day1, na.rm = TRUE)),
color = "black", size = 1)
2) Q-Q plot(quantile, 분위수) : 자료의 누적값을 정규 분표의 누적확률과 대조하여 표시; 각 값- 그 값에 해당하는 정규분포 기대값을 x/y에서 나가는 선좌표로 사용하여 cross되는 곳에 점 생성(정규본포일 시, 대각선 형성)
- 사용함수: stat_qq(), qplot()
qqplot.day1 <- qplot(sample = festival.data$day1, stat= "qq") qqplot.day1
- 정규분포가 아닌 모형 : 비대칭 - S자 곡선, 첨도 - 일관되게 대각선의 위 또는 아래에 위치
qqplot.day1 <- qplot(sample = festival.data$day1, stat= "qq")
qqplot.day1
참고: https://www.youtube.com/watch?v=qM7A0vcb_eg
youtube.com/watch?v=IgIN9-4-kSg
Quantifying 정규성 : 숫자로 확인
1) 비대칭도와 첨도
-사용 함수 : psych패키지 -> describe()함수;
pastecs 패키지 -> stat.desc(변수이름, basic = TRUE, norm = FALSE)함수
#1 method : (recommend) -> list out variable names
describe(festival.data[, c("day1", "day2", "day3")])
stat.desc(festival.data[, c("day1", "day2", "day3")],
basic = FALSE, norm = TRUE)
#2 method : cbind
describe(cbind(festival.data$day1,festival.data$day2 ,festival.data$day3))
stat.desc(cbind(festival.data$day1,festival.data$day2 ,festival.data$day3),
basic = FALSE, norm = TRUE)
#3 method : one by one
describe(festival.data$day1)
stat.desc(festival.data$day1, basic = FALSE, norm = TRUE)
stat.desc(festival.data$day1, basic = TRUE, norm = TRUE)
- 비대칭도(skewness) : (= 0) 정규분포, (+> 0) right-skew, (-< 0) left-skew
- 첨도(kurtosis) : (= 0) 정규분포, (+> 0) 분포가 뾰족 & 꼬리가 두꺼움, (-< 0) 분포가 평평 & 꼬리가 가늠
* e-#, e+#에 주의하여 숫자를 인식해야한다. ex) 1.20 e-01 = 0.12
* round(반올림할 객체, digits = 소수점 이하 유효자릿수)로 복잡해보이는 숫자를 간편화 할 수 있다
round(stat.desc(cbind(festival.data$day1,festival.data$day2 ,festival.data$day3),
basic = FALSE, norm = TRUE), digits = 3)
2) z-score(표준화 점수): 비대칭도/첨도의 유의성 점검; 표본이 클 때는 사용 X(>200, 정규분포가 아니여도 유의결과나옴)
1. 서로 다른 측정 방법으로 얻은 표본들의 비대칭도/첨도 비교, 2. 비대칭도/첨도 발생 활률 파악
- z(비대칭도) = (skewness - μ)/(SE of skewness)
- z(첨도) = (kurtosis - μ)/(SE of kurtosis)
=> 이러한 비대칭/첨도가 우연히 나올 수 있는가? : 큰 표본에서는 정규분포에서 조금만 벗어나도 유의한 값이 나오므로
큰 포본에서는 z = 2.58(P < .01), 작은 표본에서는 z = 1.96(P<0.05);
아주 큰 표본(>200)은 너무 작은 표준오차의 문제점으로 눈으로 (1번방법) 비대칭/첨도의 값을 확인하는 것이 더 중요
- stat.desc에서의 skew.2SE, kurt2SE : 비대칭도/첨도를 각자의 (표준오차*2)로 나눈 것
-> z-score 2.58이 유의한 것과 같이, 표준오차*2를 감안하여 score 1.29(약 1)보다 크면 유의하다고 볼 수 있다.
1(p<.05, for 30<N<50), 1.29(p < .01), 1.65(p<.001); (표본이 작을 경우, 큰 경우는 주의!)
검정통계로 확인
사피로-윌크 검정(Shapiro-Wilk test) : 표본점수와 그 표본과 평균/표준편차가 동일한 정규분포에서 뽑은 점수와 비교
- 유의함(p > .05) : 정규분포와 유의하게 다르다 (정규분포X)
- 한계: 표본이 크면 정규분포를 조금만 벗어나도 유의한 결과가 나오기 쉽다.
정규분포에서 벗어난 결과라도 히스토그램/Q-Q/비대칭/첨도 등과 함께 파악하는 등 정규성 가정 통계 사용유무 결정
- shapiro.test(데이터셋$변수), stat.desc(데이터셋$변수, norm = TRUE)의 normtest.W, normtest.p
- 여러변수 : by(데이터셋$변수, 데이터셋$변수, shapiro.test) *)그룹들 비교 분석은 전체 분포가 아닌 각 그룹 분포가 중요!
- 보고: The percentage on the R exam, W = 0.96, p = .005, and the numeracy scores, W = 0.92, p < .001, were both significantly non-normal.
+) 자료 그룹들 살펴보기 by R
1) 자료 전체 분석: stat.desc(), stat_function()
round(stat.desc(rexam[,c("exam","computer","lectures","numeracy","uni")],
basic = FALSE, norm = TRUE), digits = 3)
#exam
hist.exam <- ggplot(rexam, aes(exam)) +
geom_histogram(aes(y = ..density..), fill = "white", color = "black") +
stat_function(fun = dnorm, args = list(mean = mean(rexam$exam, na.rm = TRUE),
sd = sd(rexam$exam, na.rm = TRUE)), size = 3)
hist.exam
2) 그룹별 분석: by(), subset()
#그룹별 수치
by(data = rexam$exam, INDICES = rexam$uni, FUN = stat.desc, basic = FALSE, norm = TRUE)
#Multiple variables
by(cbind(rexam$exam, rexam$numeracy), rexam$uni, describe)
by(rexam[,c("exam", "numeracy")], rexam$uni, stat.desc, basic = FALSE, norm = TRUE)
-> parameter name does not have to be listed if in order of data,INDICES,FUN
#그룹별 히스토그램
#subset으로 그룹별 데이터셋 생성
dunce.data <- subset(rexam, rexam$uni == "Duncetown U")
sussex.data <- subset(rexam, rexam$uni == "Sussex U")
#DuncetownUni 히스토그램 생성
hist.num.dunce <- ggplot(dunce.data, aes(numeracy)) +
theme(legend.position = "none") +
geom_histogram(aes(y = ..density..), fill = "white", color = "black", binwidth = 1) +
labs(x = "Numeracy Score of Duncetown U", y = "Density") +
stat_function(fun = dnorm, args = list(mean = mean(dunce.data$numeracy, na.rm = TRUE),
sd = sd(dunce.data$numeracy, na.rm = TRUE)), color = "blue", size = 1)
hist.num.dunce
#SussexUni 히스토그램 생성
hist.num.sussex <- ggplot(sussex.data, aes(numeracy)) +
theme(legend.position = "none") +
geom_histogram(aes(y = ..density..), fill = "white", color = "black", binwidth = 1) +
labs(x = "Numeracy Score of Sussex U", y = "Density") +
stat_function(fun = dnorm, args = list(mean = mean(sussex.data$numeracy, na.rm = TRUE),
sd = sd(sussex.data$numeracy, na.rm = TRUE)), color = "blue", size = 1)
hist.num.sussex
출처 및 참고 : '앤디 필드의 유쾌한 R 통계학'
'통계' 카테고리의 다른 글
상관(Correlation) (0) | 2022.01.19 |
---|---|
[가정] 모수적 검정 - 2) 분산의 동질성(homogeneity of variance) (0) | 2022.01.14 |
R - graph(ggplot2) (0) | 2022.01.13 |
R- Rstudio in Mas OC (0) | 2022.01.03 |
추론통계(Inferential statistics) : 2) 통계모형과 가설검정 (0) | 2021.12.30 |