정보
- 업무명 : 기상관측자료 분석 문의
- 작성자 : 이상호
- 작성일 : 2021-01-27
- 설 명 :
- 수정이력 :
문의
- 총 기온검증장치가 12개라고 생각하고, 이것의 상대적 차이를 이용하고 대응표본 티검정을 이용해서 소형백엽상과 B의 상대적 기온차이를 봤을때는 거의 평균 0.3차이가 나고, 표준편차는 0.2정도라고 해요. 그럼 최대 0.5차이 난다는 뜻이겠죠.
- 그리고 대응표본 티검정을 했을때는 p값이 0.05보다 작아서 유의한 차이가 있다고 해석이 되어요.
- 이게 문제는 모든 분석에서 유의한 차이가 있다고 나와서요.
- 이번에는 t통계량이 0으로 가까울수록 소형백엽상과 기온검증장치가 유사하다고 결론을 내고 싶거든요.
- 이런 방법으로 해석을 해도 되는지 궁금해요.
답변
- 보내주신 8월 소형백엽상과 엑셀 파일에서 "최고/최저/일평균" 시트를 이용해서 통계 프로그래밍 (R)로
검정 결과 및 그림을 송부하오니 확인 부탁드립니다. - 일반적으로 통계 검정 시 다음과 같이 수행했습니다.
- [1 단계] F 검정 : 신뢰구간 (95%) 기준에서 P값 (유의수준)에 따라 귀무가설 기각/채택 여부 선정
- > P값 (0.05 이하) > 귀무가설 기각 > 상이한 분산 > 두 일사계의 분산 차이가 있다.
- > P값 (0.05 초과) > 귀무가설 채택 > 동일한 분산 > 두 일사계의 분산 차이가 없다.
- [2 단계] T 검정 : 앞서 F 검정 결과 (상이한 vs 동일한 분산) 정보를 이용하여 T 검정을 수행
- P값 (유의수준)에 따라 귀무가설 기각/채택 여부를 선택합니다.
- > P값 (0.05 이하) > 귀무가설 기각 > 두 일사계는 차이가 있다.
- > P값 (0.05 초과) > 귀무가설 채택 > 두 일사계는 차이가 없다.
- P값 (유의수준)에 따라 귀무가설 기각/채택 여부를 선택합니다.
- 따라서 T 검정 결과 "최저/최저/일평균"에 대한 두 일사계 (소형백엽상 vs B-*)는 차이가 없습니다.
[T 테스트]
[F 테스트]
[소스 코드]
#===============================================================================================
# Routine : Main R program
#
# Purpose : 재능상품 오투잡
#
# Author : 해솔
#
# Revisions: V1.0 May 28, 2020 First release (MS. 해솔)
#===============================================================================================
#================================================
# 요구사항
#================================================
# 기상관측자료 분석 문의사항
serviceName = "QUE0003"
library(tidyverse)
library(ggplot2)
library(lubridate)
library(openxlsx)
library(fs)
library(moonBook)
library(webr)
library(tidyverse)
library(ggstatsplot)
library(useful)
#================================================
# Set Env
#================================================
globalVar = new.env()
globalVar$inpConfig = "."
globalVar$figConfig = "."
globalVar$outConfig = "."
globalVar$logConfig = "."
globalVar$mapConfig = "."
#================================================
# Main
#================================================
fileInfo = Sys.glob(paste(globalVar$inpConfig, "8월 소형백엽상과 기존차광통분석.xlsx", sep = "/"))
data = openxlsx::read.xlsx(fileInfo, sheet = 1) %>%
dplyr::rename(ref = 소형백엽상)
dataL1 = data %>%
dplyr::mutate(
dtDate = readr::parse_date(sDate, "%Y-%m-%d")
) %>%
na.omit()
typeList = sort(unique(dataL1$type))
colList = setdiff(colnames(dataL1), c("sDate", "type", "ref", "dtDate"))
dataL3 = data.frame()
typeInfo = "최대값"
colInfo = "P-1"
for (typeInfo in typeList) {
for (colInfo in colList) {
dataL2 = dataL1 %>%
dplyr::filter(type == typeInfo) %>%
dplyr::select(colInfo, ref) %>%
tidyr::gather(key = "key", value = "value")
if (nrow(dataL2) < 1) { next }
# P값이 2.2204e-16으로서 귀무가설 기각 (두 특성의 분산 차이가 있다)
# 따라서 상이한 분산 조건 (var.equal = FALSE)
fTest = var.test(value ~ key, data = dataL2, conf.level = 0.95)
fTest
setLabel = paste0(typeInfo, "_", colInfo,"-", "소형백엽상")
saveImg = sprintf("%s/%s_%s_%s.png", globalVar$figConfig, serviceName, "F-Test", setLabel)
plot(fTest) +
xlim(0, 5) +
ggsave(filename = saveImg, width = 10, height = 6, dpi = 600)
isVarEqual = TRUE
setVarResult = sprintf("P값이 %s로서 귀무가설 채택 (동일한 분산: 두 일사계의 분산 차이가 없다)", round(fTest$p.value, 3))
if (fTest$p.value < 0.05) {
isVarEqual = FALSE
setVarResult = sprintf("P값이 %s로서 귀무가설 기각 (상이한 분산 : 두 일사계의 분산 차이가 없다)", round(fTest$p.value, 3))
}
# P값이 0.054로서 귀무가설 기각 (두 특성은 차이가 있다)
tTest = t.test(value ~ key, data = dataL2, var.equal = isVarEqual)
saveImg = sprintf("%s/%s_%s_%s.png", globalVar$figConfig, serviceName, "T-Test", setLabel)
plot(tTest) +
xlim(-5, 5) +
ggsave(filename = saveImg, width = 10, height = 6, dpi = 600)
setResult = sprintf("P값이 %s로서 귀무가설 채택 (두 일사계는 차이가 없다)", round(tTest$p.value, 3))
if (tTest$p.value < 0.05) { sprintf("P값이 %s로서 귀무가설 기각 (두 일사계는 차이가 있다)", round(tTest$p.value, 3)) }
tmpData = data.frame(
"setLabel" = setLabel
, "fVal" = fTest$statistic
, "fPval" = fTest$p.value
, "fResult" = setVarResult
, "tVal" = tTest$statistic
, "tPval" = tTest$p.value
, "tResult" = setResult
)
dataL3 = dplyr::bind_rows(dataL3, tmpData)
}
}
# XLSX 파일 생성
saveXlsxFile = sprintf("%s/%s_%s.xlsx", globalVar$outConfig, serviceName, "통계 결과")
wb = openxlsx::createWorkbook()
openxlsx::addWorksheet(wb, "table")
openxlsx::writeData(wb, "table", dataL3, startRow = 1, startCol = 1, colNames = TRUE, rowNames = FALSE)
openxlsx::saveWorkbook(wb, file = saveXlsxFile, overwrite = TRUE)
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
'자기계발 > 지식iN·문의사항' 카테고리의 다른 글
[문의사항] 기상청 데이터 처리 관련 문의 (0) | 2021.01.27 |
---|---|
[문의사항] 라디오존데 정보를 활용한 상대습도 등고선 가시화 자료 도움 요청 (0) | 2021.01.27 |
[문의사항] 항공관측자료 관련 문의 (0) | 2021.01.27 |
[문의사항] ERA-Interim 문의 (0) | 2021.01.27 |
[지식iN] R 프로그래밍 관련 질문&답변 (Q&A) 및 소스 코드 현행화 (4) : 2020년 06월 07일 (4) | 2020.06.07 |
최근댓글