# data[].attributes.body
#산점도 그리기
ggplot(data=rawdata, aes(x=ChiAge, y=HSP)) +
geom_point(shape=15, size=2,colour="blue") +
ggtitle("Scatter plot : HSP") +
labs (x="Age", y="Score")

#색깔로 집단구분하여 나타내기
ggplot(data=rawdata, aes(x=ChiAge, y=HSP, colour=ChiSex)) +
geom_point(shape=15, size=2) +
ggtitle("Scatter plot : HSP") +
labs (x="Age", y="Score")

#모양으로 집단 구분하여 나타내기
ggplot(data=rawdata, aes(x=ChiAge, y=HSP, shape=ChiSex)) +
geom_point(size=2) +
ggtitle("Scatter plot : HSP") +
labs (x="Age", y="Score")

#그리드로 집단 구분하여 나타내기
ggplot(data=rawdata, aes(x=ChiAge, y=HSP)) +
geom_point(shape=19, size=2) +
ggtitle("Scatter plot : HSP") +
labs (x="Age", y="Score") +
facet_grid(ChiSex ~.)

# data[].attributes.body
[R markdown 예시 자료]
(https://www.dropbox.com/s/pi8zu0mnzuxxq33/Rstudy20_R%20markdown.Rmd?dl=0)

[R markdown 예시 자료 knit 결과]
(https://www.dropbox.com/s/kp2hleocmo9ue2s/Rstudy20_R-markdown.html?dl=0)

# data[].attributes.body
#geom_smooth
ggplot(data=rawdata, aes(x=ChiAge, y=HSP))+
geom_point(shape=15, size=2, colour="blue")+
geom_smooth(mapping=aes(x=ChiAge, y=HSP))
* geom_smooth() 또는 stat_smooth()로도 입력 가능.

#산포도 회귀선(선형)
ggplot(data=rawdata, aes(x=ChiAge, y=HSP))+
geom_point(shape=15, size=2, colour="blue")+
stat_smooth(method='lm')

#포인트 서식 변환 및 성별기준 회귀선
ggplot(data=rawdata, aes(x=ChiAge, y=HSP, group=ChiSex))+
geom_point(size=c(2,6)[rawdata$ChiSex],
pch=c(0, 20)[rawdata$ChiSex],
colour=c("purple", "green")[rawdata$ChiSex])+
stat_smooth(method='lm')

#회귀선 색깔구분
ggplot(data=rawdata, aes(x=ChiAge, y=HSP, group=ChiSex))+
geom_point(size=c(2,6)[rawdata$ChiSex],
pch=c(0, 20)[rawdata$ChiSex],
colour=c("purple", "green")[rawdata$ChiSex])+
stat_smooth(mapping=aes(x=ChiAge, y=HSP, color=ChiSex), method='lm')

#절편 및 기울기
summary(lm(formula(HSP~ChiAge), data=rawdata))
또는
fo <-lm(formula(HSP~ChiAge+ChiSex), data=rawdata)
summary(fo)

# data[].attributes.body
#binom.test 내 숫자 하나를 변수로 바꾸는 응용법(예: a<-27, b<-40)
binom.test(x=a,n=b,p=0.5)

#위와 같이 하면, a에 27이 저장되고 n에 40이 저장되어 binom.test(x=27,n=40,p=0.5)와 동일한 결과 획득

# data[].attributes.body
# FIle-import data 이용 가능

# 지정폴더 설정
setwd("C:/Users/Youngon Choi/Desktop/R")
getwd()

# CSV 불러오기
exam=read.csv('J_LA.csv', header=TRUE)
exam
View(exam)

# Excel 불러오기
install.packages("readxl")
library("readxl")
Result <- read_excel("C:/Users/Youngon Choi/Desktop/R/Result.xlsx", sheet="종합결과")
View(Result)

# data[].attributes.headline
기술통계(지정파일설정)

# data[].attributes.subject
기술통계(지정파일설정)

# data[].attributes.body
#결측치 제거
data <- na.omit(rawdata)
View(data)

# 기술통계
attach(Result)  # 통계 파일 설정하기
names(Result)  # 파일 항목 확인
mean(C_month) #평균 구하기
median(C_month) # 중앙값 구하기
min(C_month) # 최솟값 구하기
max(C_month) # 최댓값 구하기
sd(C_month) # 분산 구하기
summary(C_month) # 평균, 중앙값, 25%, 75%, 최소, 최댓값 등 요약
summary(Result) # 전체 데이터 각 항목 값 요약
detach(Result) # 파일 설정 해제하기
attach(exam) # 새로운 파일 설정하기(이하 반복)
names(exam)
mean(ageM)
median(ageM)
min(ageM)
max(ageM)
sd(ageM)
summary(ageM)
summary(exam)

# data[].attributes.headline
기술통계(지정파일설정X)

# data[].attributes.subject
기술통계(지정파일설정X)

# data[].attributes.body
#기술통계(파일지정 X)
mean(Result$IRI_total)
median(Result$IRI_total)
summary(Result$IRI_total)
round(mean(Result$IRI_total),2)

#집단별 기술통계
tapply(Result$IRI_total, Result$C_month, mean)
tapply(Result$IRI_total, Result$C_month, min)
tapply(Result$IRI_total, Result$C_month, summary)
Female <-subset(Result, C_sex=="2")
Male<-subset(Result, C_sex=="1")
round(mean(Female$IRI_total),2)
round(summary(Female$IRI_total),2)
round(summary(Male$IRI_total),2)

# data[].attributes.headline
1개 이상 변인에  대한 기술통계

# data[].attributes.subject
1개 이상 변인에  대한 기술통계

# data[].attributes.body
# 여러 변인에 대한 기술통계
install.packages("psych")
library(psych)
describeBy(rawdata$HSP, group=list(rawdata$ChiSex, rawdata$ChiAge), mat=F)
describeBy(rawdata$HSP, group=list(rawdata$ChiSex, rawdata$ChiAge), mat=T, digit=2)

# data[].attributes.body
# 범주형 변인으로 변환하기(Label 포함)
rawdata$ChiSex <- factor(rawdata$ChiSex,
levels = c(1,2),
labels = c("남자","여자"))
View(rawdata)
m.sex <- table(rawdata$ChiSex)
m.sex
barplot(m.sex)

# 변수 속성 변환(factor로 변환)
rawdata$ChiAge <- as.factor(rawdata$ChiAge)
rawdata$ChiSex <- as.factor(rawdata$ChiSex)

# 변수 속성 확인
is.factor(rawdata$ChiAge)
is.factor(rawdata$ChiSex)
sapply(rawdata, class)

# data[].attributes.body
https://www.r-graph-gallery.com/index.html

# data[].attributes.body
데이터(Result.xlsx) 불러온 상태

hist(Result$C_month,
main="연령분포",
xlab="연령", ylab="빈도")
plot(Result$C_month,Result$IRI_total,
main="연령별점수",
xlab="연령",ylab="점수",
xlim=c(14,20), ylim=c(45,100))
boxplot(Result$IRI_EC,Result$IRI_FS,Result$IRI_PD,Result$IRI_PD,
main="IRI점수",
xlab="IRI항목", ylab="점수")

# data[].attributes.body
#ggplot
install.packages("ggplot2")
library(ggplot2)

#막대그래프_하나의 변인
ggplot(rawdata, aes(x=ChiAge)) + geom_bar()
ggplot(rawdata, aes(x=ChiAge)) + geom_bar(fill="blue")
ggplot(rawdata, aes(x=ChiAge, fill=ChiAge)) + geom_bar()
ggplot(rawdata, aes(ChiAge, fill=ChiSex)) + geom_bar()

# 막대그래프 색깔지정
ggplot(rawdata, aes(ChiAge)) + geom_bar(fill="blue", colour="black")

# data[].attributes.body
# 사전작업
rawdata$ChiAge <- as.factor(rawdata$ChiAge) # 변수속성변환
rawdata$ChiSex <- as.factor(rawdata$ChiSex)
install.packages("ggplot2")
library(ggplot2)

#여러 변인을 이용한 막대그래프 _연령별 HSP점수 평균값
ggplot(rawdata, aes(ChiAge, HSP)) +stat_summary(fun=mean, geom = "bar")

# 연령별 HSp점수 평균값을 성별로 그룹화하기
ggplot(rawdata, aes(ChiAge, HSP, group=ChiSex)) + stat_summary(fun=mean, geom = "bar", position = "dodge")

ggplot(rawdata, aes(ChiAge, HSP, fill=ChiSex)) + stat_summary(fun=mean, geom = "bar", position = "dodge")

# 오차막대
ggplot(rawdata, aes(ChiAge, HSP, fill=ChiSex)) + stat_summary(fun=mean, geom = "bar", position = "dodge") + stat_summary(geom = "errorbar", width=0.2, fun.min = min, fun.max = max, position = position_dodge(width = 0.9))

# 잘못된 예시(stat_summary를 이용하지 않았을 때)
ggplot(data=rawdata, aes(x=ChiAge, y=mean(HSP), Group=ChiSex))+
geom_bar(stat='identity', position='dodge')

# 변인그룹화
rawdata <- within(rawdata, {Age_level=character(0)
Age_level [ ChiAge <= 15] = "young"
Age_level [ ChiAge > 15 & ChiAge <= 18 ] = "middle"
Age_level [ ChiAge > 18 ] = "old"
Age_level = factor(Age_level, level = c("young", "middle", "old"))}) # 부등호, 등호 순서 주의
View(rawdata)

# 데이터프레임 형성 & 그래프
install.packages("plyr")
library(plyr)
df <- ddply(rawdata, c("Age_level", "ChiSex"), summarise, mean=mean(HSP), sd=sd(HSP), se=sd/sqrt(n))
colnames(df)[3]="HSP"
df
ggplot(df, aes(Age_level, HSP, fill=ChiSex)) + geom_bar(stat="identity", position = "dodge") + geom_errorbar(aes(ymin=HSP-se, ymax=HSP+se), position = position_dodge(0.9), width=0.2)

# data[].attributes.body
#boxplot
ggplot(rawdata, aes(Age_level, HSP)) + geom_boxplot(fill="White")
ggplot(rawdata, aes(Age_level, HSP, fill=ChiSex)) + geom_boxplot()

# data[].attributes.body
ggplot2 패키지 관련하여 필요한 기능들을 모아 정리해 놓은 cheat sheet 파일을 공유합니다. (R studio 에서 제공하는 파일입니다.)

R studio에서 Help > Cheatsheet 클릭하시면 이외에도 다른 패키지의 cheatsheet을 확인해 보실 수 있습니다.

# data[].attributes.body
#ggplot 각종 서식 변경하기1
ggplot(df, aes(Age_level, HSP, fill=ChiSex)) +
geom_bar(stat="identity", position = position_dodge(0.9)) +
geom_errorbar(aes(ymin=HSP-se, ymax=HSP+se), position = position_dodge(0.9), width=0.2) +
theme_bw() +    #배경지정
scale_fill_manual(values = c("dark blue", "dark red"),
labels=c("Male","Female"),
name="sex") +       #범례 및 막대 색깔 지정
scale_y_continuous(breaks = c(10,20,30,40,50,60), limits = c(0,60), labels = c("1st","2nd","3rd","4th","5th","6th")) +   #y축 단위, 범위, 이름 지정
theme(axis.text.x = element_text(size = 15),  # x축 단위 글자크기
axis.text.y = element_text(size = 15),  # y축 단위 글자크기
axis.title = element_text(size = 20, color="black"), #x, y축 제목 글자 크기
legend.position = "bottom", # 범례 위치 지정
legend.key = element_rect(fill=NA), # 범례 테두리
legend.key.size = unit(1.0, "cm"),  # 범례 크기
legend.background = element_rect(fill= alpha("cadetblue", .50)), #범례 배경색
legend.title = element_text(size=17, color="blue"),
legend.text = element_text(size=10, color = "red")) # 범례 제목 및 내용 글자 서식

# data[].attributes.headline
막대그래프 개별데이터 시각화

# data[].attributes.subject
막대그래프 개별데이터 시각화

# data[].attributes.body
ggplot(rawdata2, aes(Age_level, HSP, fill = ChiSex))+
stat_summary(fun = mean, geom = "bar", position = "dodge") +
stat_summary(geom = "errorbar", fun.data = mean_se, width=0.2, position = position_dodge(width = 0.9)) +  #stat_summary, mean_se
labs (x="Age group", y="score") +   # x, y축 이름 지정
theme_bw() +
scale_fill_manual(values = c("dark blue", "dark red"),
labels=c("Male","Female"),
name="sex") +
scale_y_continuous(breaks = c(10,20,30,40,50,60), limits = c(0,60)) +
theme(axis.text.x = element_text(size = 15),
axis.text.y = element_text(size = 15),
axis.title = element_text(size = 20, color="black"),
legend.position = "bottom",
legend.key = element_rect(fill=NA),
legend.key.size = unit(1.0, "cm"),
legend.background = element_rect(fill= alpha("cadetblue", .50)),
legend.title = element_text(size=17, color="blue"),
legend.text = element_text(size=10, color = "red")) +
geom_point(alpha = 0.9, aes(Age_level, HSP, group = ChiSex),
position = position_dodge(width=0.9))  #개별데이터 시각화

# data[].attributes.body
ggplot(rawdata2, aes(Age_level, HSP, fill = ChiSex))+
geom_boxplot(outlier.shape = 24, outlier.color = "red", outlier.fill = "red") +       #outlier 서식                     stat_summary(fun = mean, geom="point", shape=21, size=3, fill="red", colour="red", aes(group=ChiSex), position = position_dodge(width=0.75)) +           # 평균값 표시
geom_point(alpha = 0.9, aes(Age_level, HSP, fill = ChiSex), position = position_dodge(width=0.75))
# 개별데이터 표시

# data[].attributes.body
#table 그리기
install.packages("ggpubr")
library(ggpubr)
table=desc_statby(rawdata2, measure.var = "HSP", grps="Age_level")
table2=table[,c("length","mean","sd")]
colnames(table2)=c("n","mean","sd")
table3=apply(table2, 2, function(x){round(x,1)})
table4=ggtexttable(table3, rows=NULL, theme = ttheme("classic"))
table4

#boxplot with table
library(ggplot2)
ggplot(rawdata2, aes(Age_level,HSP))+
geom_boxplot(alpha=0.1, aes(col=Age_level, fill=Age_level)) +
geom_jitter(alpha=0.3, aes(col=Age_level), width= 0.05) +
theme_bw() +
theme(text=element_text(size = 14, face="bold")) +
annotation_custom(ggplotGrob(table4), xmin = 3.5, xmax=4.5, ymin=8)

# data[].attributes.headline
막대그래프 개별데이터 시각화

# data[].attributes.subject
막대그래프 개별데이터 시각화

# data[].attributes.body
ggplot(rawdata2, aes(Age_level, HSP, fill = ChiSex))+
stat_summary(fun = mean, geom = "bar", position = "dodge") +
stat_summary(geom = "errorbar", fun.data = mean_se, width=0.2, position = position_dodge(width = 0.9)) +  #stat_summary, mean_se
labs (x="Age group", y="score") +   # x, y축 이름 지정
theme_bw() +
scale_fill_manual(values = c("dark blue", "dark red"),
labels=c("Male","Female"),
name="sex") +
scale_y_continuous(breaks = c(10,20,30,40,50,60), limits = c(0,60)) +
theme(axis.text.x = element_text(size = 15),
axis.text.y = element_text(size = 15),
axis.title = element_text(size = 20, color="black"),
legend.position = "bottom",
legend.key = element_rect(fill=NA),
legend.key.size = unit(1.0, "cm"),
legend.background = element_rect(fill= alpha("cadetblue", .50)),
legend.title = element_text(size=17, color="blue"),
legend.text = element_text(size=10, color = "red")) +
geom_point(alpha = 0.9, aes(Age_level, HSP, group = ChiSex),
position = position_dodge(width=0.9))  #개별데이터 시각화

# data[].attributes.headline
boxplot, outlier, mean, individual data points

# data[].attributes.subject
boxplot, outlier, mean, individual data points

# data[].attributes.body
ggplot(rawdata2, aes(Age_level, HSP, fill = ChiSex))+
geom_boxplot(outlier.shape = 24, outlier.color = "red", outlier.fill = "red") +       #outlier 서식                     stat_summary(fun = mean, geom="point", shape=21, size=3, fill="red", colour="red", aes(group=ChiSex), position = position_dodge(width=0.75)) +           # 평균값 표시
geom_point(alpha = 0.9, aes(Age_level, HSP, fill = ChiSex), position = position_dodge(width=0.75))
# 개별데이터 표시

# data[].attributes.headline
내가 썼던 프로그램이야.

# data[].attributes.subject
내가 썼던 프로그램이야.

# data[].attributes.body
ggplot(kfad, aes(ageG, LTD))+
geom_boxplot(alpha=0.1, aes(col=ageG, fill=ageG))+
#geom_boxplot(outlier.shape = 21, outlier.color = "red", outlier.fill = "red") +  #outlier 서식
stat_summary(fun = mean, geom="point", shape=21, size=3, fill="black", colour="black",
aes(group=ageG, fill=ageG), position = position_dodge(width=0.75)) +    # 평균값 표시
labs (x="Age group", y="Looking Time Difference (Switch - Same)") +   # x, y축 이름 지정
scale_fill_manual(values = c("#c994c7", "#9ecae1"),
labels=c("4-5 months","5-6 months"),
name="Age Group") +
scale_y_continuous(breaks = c(-4,-3,-2,-1,0,1, 2, 3, 4, 5), limits = c(-4,5)) +
theme_bw()+
theme(axis.text.x = element_text(size = 10),
axis.text.y = element_text(size = 10),
axis.title = element_text(size = 12, color="black"),
legend.position = "bottom",
legend.key = element_rect(fill=NA),
legend.key.size = unit(1.0, "cm"),
legend.background = element_rect(fill= alpha("white", .50)),
legend.title = element_text(size=10, color="black"),
legend.text = element_text(size=10, color = "black")) +
geom_jitter(aes(col=ageG), width= 0.05, height= 0.05, show.legend = FALSE)#indivdiual points with varied location

# data[].attributes.body
#geom_smooth
ggplot(data=rawdata, aes(x=ChiAge, y=HSP))+
geom_point(shape=15, size=2, colour="blue")+
geom_smooth(mapping=aes(x=ChiAge, y=HSP))
* geom_smooth() 또는 stat_smooth()로도 입력 가능.

#산포도 회귀선(선형)
ggplot(data=rawdata, aes(x=ChiAge, y=HSP))+
geom_point(shape=15, size=2, colour="blue")+
stat_smooth(method='lm')

#포인트 서식 변환 및 성별기준 회귀선
ggplot(data=rawdata, aes(x=ChiAge, y=HSP, group=ChiSex))+
geom_point(size=c(2,6)[rawdata$ChiSex],
pch=c(0, 20)[rawdata$ChiSex],
colour=c("purple", "green")[rawdata$ChiSex])+
stat_smooth(method='lm')

#회귀선 색깔구분
ggplot(data=rawdata, aes(x=ChiAge, y=HSP, group=ChiSex))+
geom_point(size=c(2,6)[rawdata$ChiSex],
pch=c(0, 20)[rawdata$ChiSex],
colour=c("purple", "green")[rawdata$ChiSex])+
stat_smooth(mapping=aes(x=ChiAge, y=HSP, color=ChiSex), method='lm')

#절편 및 기울기
summary(lm(formula(HSP~ChiAge), data=rawdata))
또는
fo <-lm(formula(HSP~ChiAge+ChiSex), data=rawdata)
summary(fo)

# data[].attributes.body
ggplot 명령어 +
theme(legend.position='none')
를 추가하시면 될 것 같습니다.

# data[].attributes.headline
집단별 색깔, 모양 지정하기

# data[].attributes.subject
집단별 색깔, 모양 지정하기

# data[].attributes.body
# 산포도 그룹별 색깔 지정
ggplot(data=rawdata, aes(x=ChiAge, y=HSP, color=ChiSex, shape=ChiSex))+
geom_point()+
geom_smooth(method='lm', aes(fill=ChiSex))+
scale_color_manual(values = c("purple","gray")) +
scale_fill_manual(values = c("purple", "gray")) +
scale_shape_manual(values = c(16, 18))

# 산포도 그룹별 색깔 지정(오차범위 없애기)
ggplot(data=rawdata, aes(x=ChiAge, y=HSP, color=ChiSex, shape=ChiSex))+
geom_point()+
geom_smooth(method='lm', se=FALSE)+
scale_color_manual(values = c("purple","gray"))

# data[].attributes.body
boxplot 관련 명령어에 범례 설정을 바꿔주시면 될 것 같습니다!

geom_boxplot(alpha=0.1, aes(col=ChiSex, fill=ChiSex), show.legend ="none")

# data[].attributes.headline
2개이상 변인 상관 산포도

# data[].attributes.subject
2개이상 변인 상관 산포도

# data[].attributes.body
x=cbind(ChiAge, HSP, MRC, EA)
pairs(x)

# data[].attributes.body
cor(x, method = "spearman")

# data[].attributes.body
g1 <- ggplot(rawdata, aes(ChiSex, HSP, group=ChiSex))+geom_boxplot()
g2 <- ggplot(rawdata, aes(HSP))+geom_histogram(fill="white", color="grey30") + facet_wrap(~ChiSex)
grid.arrange(g1,g2,ncol=1)

# data[].attributes.body
# 등분산 O
t.test(HSP~ChiSex, var.equal=TRUE)
# 등분산 X
t.test(HSP~ChiSex, var.equal=FALSE)

# data[].attributes.body
#정규성 검정 - shapiro test: H0=모집단이 정규분포를 따른다
shapiro.test(rawdata$HSP_modi)

#정규성 검정 - histogram & Kernel Density plot
hist(rawdata$HSP_modi)
hist(rawdata$HSP_modi, freq = FALSE)
lines(density(rawdata$HSP_modi), col="blue", lwd=3)

#정규성 검정 - Q-Q plot
qqnorm(rawdata$HSP_modi)
qqline(rawdata$HSP_modi)

# data[].attributes.body
#data transformation : 정규분포로 변환하기 - 로그변환
rawdata <-transform(rawdata, HSP_modi_log = log(HSP_modi+1))
hist(rawdata$HSP_modi_log, freq=TRUE)

#data transformation : 정규분포로 변환하기 - 제곱근변환
rawdata <-transform(rawdata, HSP_modi_sqrt = sqrt(HSP_modi))
hist(rawdata$HSP_modi_sqrt, freq = TRUE)

#변환한 분표 비교(Q-Q plot)
par(mfrow=c(1,3))
qqnorm(rawdata$HSP_modi)
qqline(rawdata$HSP_modi)
qqnorm(rawdata$HSP_modi_log)
qqline(rawdata$HSP_modi_log)
qqnorm(rawdata$HSP_modi_sqrt)
qqline(rawdata$HSP_modi_sqrt)

#변환한 분표 비교(histogram & Kernel Density plot) : 참고용
par(mfrow=c(1,3))
hist(rawdata$HSP_modi, freq = FALSE)
lines(density(rawdata$HSP_modi), col="blue", lwd=3)
hist(rawdata$HSP_modi_log, freq = FALSE)
lines(density(rawdata$HSP_modi_log), col="blue", lwd=3)
hist(rawdata$HSP_modi_sqrt, freq = FALSE)
lines(density(rawdata$HSP_modi_sqrt), col="blue", lwd=3)

# data[].attributes.headline
집단별 색깔, 모양 지정하기

# data[].attributes.subject
집단별 색깔, 모양 지정하기

# data[].attributes.body
# 산포도 그룹별 색깔 지정
ggplot(data=rawdata, aes(x=ChiAge, y=HSP, color=ChiSex, shape=ChiSex))+
geom_point()+
geom_smooth(method='lm', aes(fill=ChiSex))+
scale_color_manual(values = c("purple","gray")) +
scale_fill_manual(values = c("purple", "gray")) +
scale_shape_manual(values = c(16, 18))

# 산포도 그룹별 색깔 지정(오차범위 없애기)
ggplot(data=rawdata, aes(x=ChiAge, y=HSP, color=ChiSex, shape=ChiSex))+
geom_point()+
geom_smooth(method='lm', se=FALSE)+
scale_color_manual(values = c("purple","gray"))

# data[].attributes.body
lm(formula=HSP~Chiage, data=rawdata)

# data[].attributes.body
# 회귀방정식 추가
ggplot(data=rawdata, aes(x=ChiAge, y=HSP, group=ChiSex))+ stat_smooth(method='lm') +
geom_point(color='gray75') +
geom_text(x=19, y=48, label="y=1.61x+14.63") +
geom_text(x=19, y=35, label="y=-1.16x+60.16", color="red", size=6)

# 회귀방정식 시각화 - ggPredict 사용(참고용)
1) 회귀선 위에 방정식 표시
install.packages("predict3d")
library(predict3d)
ggPredict(fit)

2) interactive 그래프
install.packages("ggiraphExtra")
library(ggiraphExtra)
ggPredict(fit, colorAsFactor = TRUE, interactive=TRUE)

# data[].attributes.body
#등분산 검정
bartlett.test(HSP_modi~MtEdu_level, data=rawdata)

#ANOVA
anova<-aov(HSP_modi~MtEdu_level, data=rawdata)
summary(anova)
table(rawdata$MtEdu_level)  # 표본 수 확인

# data[].attributes.body
#사후검정 - Scheffe test
# scheffe.test 사용을 위해 필요한 패키지 설치 및 활성화
install.packages("agricolae")
library(agricolae)

scheffe.test(anova, "MtEdu_level", group=F, console=T)
scheffe.test(anova, "MtEdu_level", group=T, console=T)

# 사후검정 : tukey
TukeyHSD(anova, conf.level = 0.95)
- conf.level은 입력하지 않을 경우 0.95가 기본값.

# 사후검정: Bon-ferroni
library(agricolae)
comparison <-LSD.test(anova, "MtEdu_level", p.adj = "bonferroni", group=F)
comparison
comparison2 <-LSD.test(anova, "MtEdu_level", p.adj = "bonferroni", group=T)
comparison2

# data[].attributes.body
#회귀방정식
1) default
fit = lm(formula=HSP~ChiAge, data=rawdata)
summary(fit)
2) 2개 이상의 집단(한 집단 기준으로 값 계산 필요, 참고)
fit = lm(formula=HSP~ChiAge*ChiSex, data=rawdata)
summary(fit)

# 회귀방정식(2개 이상의 집단)
library(lme4)
fits <- lmList(formula = HSP~ChiAge | ChiSex, rawdata)
summary(fits)

# 수직선입력 : shift + \ = |

# data[].attributes.body
geom_jitter(alpha = 0.6,
aes(Age_level, HSP, fill = ChiSex),
position = position_jitterdodge(jitter.width = 0.2))
#geom_point로 입력해도 같은 결과 출력.
#position_jitterpoint 명령어에 따라 포인트 배치 지정(dodge, jitter, jitterdodge 등)

# data[].attributes.body
녹강 Youtube 링크
day1 : https://youtu.be/e9292cyRJ4c
day2 : https://youtu.be/3HByggMvTS4
day3 : https://youtu.be/lQYlZSvAYtQ

# data[].attributes.body
특강 내에서 활용하는 [R script & Code & Data] 자료

# data[].attributes.body
#What is the binom.test?
?binom.test

binom.test(x=24,n=36,p=0.5,conf.level = 0.95) #18-30mo, Same condition
binom.test(x=21,n=38,p=0.5) #18-30mo, Diff condition

#양측검정
binom.test(x=24,n=36,p=0.5,alternative="two.sided")
#단측검정
binom.test(x=24,n=36,p=0.5,alternative="less")
binom.test(x=24,n=36,p=0.5,alternative="greater")

# data[].attributes.body
if(!require(readxl)) install.packages("readxl")
library(readxl)

#파일 저장 위치 경로 지정하기
RMTS <- read_excel("C:/Users/Gayoung/Desktop/RMTS/RMTS-KR_Data_Sept2021 (Gayoung,Minjin).xlsx")
#View(RMTS)

# data[].attributes.body
#RMTS 18-30mo, Same condition
RMTS_18mo_same <- subset(RMTS,Exclude==0 & AgeGroup=="todd_18to30mos" & Condition=="Same")
#View(RMTS_18mo_same)
#summary(RMTS_18mo_same$Correct)
RMTS_18mo_same$Correct <- as.numeric(RMTS_18mo_same$Correct)
#str(RMTS_18mo_same$Correct)
a <- sum(RMTS_18mo_same$Correct)
b <- length(RMTS_18mo_same$Correct)

#RMTS 18-30mo, Different condition
RMTS_18mo_diff <- subset(RMTS,Exclude==0 & AgeGroup=="todd_18to30mos" & Condition=="Different")
#View(RMTS_18mo_same)
#summary(RMTS_18mo_diff$Correct)
RMTS_18mo_diff$Correct <- as.numeric(RMTS_18mo_diff$Correct)
#str(RMTS_18mo_diff$Correct)
c <- sum(RMTS_18mo_diff$Correct)
d <- length(RMTS_18mo_diff$Correct)

#RMTS - Binom test Results
binom.test(x=a,n=b,p=0.5,conf.level = 0.95) #18-30mo, Same
binom.test(x=c,n=d,p=0.5,conf.level = 0.95) #18-30mo, Different

# data[].attributes.body
R 청크를 만들 때는 ```{r}```을 입력한다. 단축키로는 `Ctrl+Alt+I`를 입력하면 된다.

*R 청크 옵션
- 기본 설정인 {r}은 코드와 결과 모두 보이기,
- {r, include=FALSE}는 코드와 결과 모두 보이지 않기,
- {r, echo=FALSE}는 결과만 보이기,
- {r, eval=FALSE}는 코드만 보이기
- {r, setup}은 r 초기 설정, 주로 패키지 활성화에 쓰임
- 기타 옵션은 이미지(표) 참고
([R 청크 옵션 표](https://www.dropbox.com/s/fxr9j6svlocnh4v/R%20markdown%20options.png?dl=0))

# data[].attributes.body
- 청크 우측 상단의 초록색 삼각형을 누르면 청크 실행
- 아래를 향하는 삼각형은 Run above chunks all
- 톱니바퀴는 청크 설정하기

*R markdown 문서 파일 저장
> 상단의 Knit 버튼 클릭
> HTML, PDF, Word 파일로 저장 가능

# data[].attributes.body
*글자 크기
글자 크기를 변경할 때는 글 앞에 #을 입력하면 된다. 이때 #의 개수에 따라서 크기가 점점 작아진다.

일반

# 제목1
## 제목2
### 제목3

*글자 강조*

*기울기*
_기울기2_

~~취소선~~
`음영`
**진하게**
__진하게__

> ## **줄바꿈 및 들여쓰기**
> space bar를 두 번 눌러 입력해주고 enter를 누르면 줄이 바뀜
> 혹은 enter를 2번 눌러서 빈 행을 만들어 띄우는 방법도 있음
> 들여쓰기는 &nbsp;를 4번 반복(&nbsp;&nbsp;&nbsp;&nbsp;)

*목록 구성*
> * or + or -를 글의 처음에 입력하면 적용됨
> 혹은 1. 를 입력할 경우에도 순서 적용됨
> Tab 키를 활용하면 하위 목록 생성 가능

- ABCD

1. A
- a
- b
2. B
+ a
+ b
3. C
* a
* b

*본문 간 구분
- 수평선이나 수직선을 그릴 수 있음
- ---, ***을 입력하면 수평선이 그어짐
- '>, >>, >>>'를 입력하면 수직선이 그어짐

---
가나

***
다라

> 마바사

>> **아자차**

>>> 마바

# data[].attributes.body
R markdown을 사용하는 데 참고할 수 있는 cheatsheet

<https://www.rstudio.com/resources/cheatsheets/>

# data[].attributes.body
[R script]
(https://www.dropbox.com/s/kq47km68i5ym11p/Rstudy19_Crosstable.R?dl=0)

[R markdown]
(https://www.dropbox.com/s/vm3r3gargrfi0cz/Rstudy19_Crosstable.Rmd?dl=0)

[R markdown html]
(https://www.dropbox.com/s/kxa9u41vkqdbs4g/Rstudy19_Crosstable.html?dl=0)

# data[].attributes.body
#gmodels 패키지 설치
if(!require(gmodels)) install.packages("gmodels")
library(gmodels)

#readxl 패키지 설치
if(!require(readxl)) install.packages("readxl")
library(readxl)

#데이터 지정
RMTS <- read_excel("C:/Users/Gayoung/Desktop/RMTS/RMTS-KR_Data_Dec1.xlsx")
#View(RMTS)
RMTS_18mo <- subset(RMTS,Exclude==0 & AgeGroup=="todd_18to30mos")

# data[].attributes.body
#0을 Incorrect로, 1을 Correct로 바꿔 저장

RMTS_18mo$Correct <- gsub("0","Incorrect", RMTS_18mo$Correct)
RMTS_18mo$Correct <- gsub("1","Correct", RMTS_18mo$Correct)

# data[].attributes.body
CrossTable(x=RMTS_18mo$Correct,   #행 데이터
y=RMTS_18mo$`Cultural Bias`, #열 데이터, 변인명에 띄어쓰기가 있을 경우 `~`(물결 밑에 있는 점)으로 묶어줌
digits=2,  #소수점 설정
prop.r = T, #행%
prop.c = T, #열%
prop.t = T, #전체%
format = "SPSS")  #출력형태 SPSS, SAS

# data[].attributes.body
CrossTable(x=RMTS_18mo$Correct,   #행 데이터
y=RMTS_18mo$`Cultural Bias`, #열 데이터
digits=2,  #소수점 설정
prop.r = T, #행%
prop.c = T, #열%
prop.t = T, #전체%
fisher=T, #피셔의 정확한 검정
chisq=T, #카이제곱검정
missing.include=F, #결측치포함여부
format = "SPSS")  #출력형태 SPSS, SAS

# data[].attributes.headline
결측치를 포함한 변인에 대한 상관 분석

# data[].attributes.subject
결측치를 포함한 변인에 대한 상관 분석

# data[].attributes.body
# 2개 이상의 변인 그룹화
그룹명=cbind(변인a, 변인b, 변인 c)

# 상관 분석
cor(그룹명, use="complete.obs")

# 시각화(상관계수, 유의여부, 산점도 표시)
install.packages("PerformanceAnalytics")
library(PerformanceAnalytics)
chart.Correlation(그룹명, use="compete.obs", histogram = , pch="+")

# 시각화(상관계수)
install.packages("corrplot")
library(corrplot)
corrplot(cor(그룹명, use="na.or.complete"), method="number")

# data[].attributes.headline
PPT에서 그래프 수정하는 방법

# data[].attributes.subject
PPT에서 그래프 수정하는 방법

# data[].attributes.body
1. R studio의 우측 하단 창 내에서 plots를 띄운다.

2. 상단의 Export 버튼에서 <Copy to Clipboard>를 클릭한다.

# data[].attributes.body
3. Copy Plot to Copyboard 창이 나타나면 그 창의 좌측 하단에서 <Metafile>을 누른다.

4. 그리고 우측 하단의 Copy Plot을 누르면 위 그래프 사진이 Ctrl+C 되었다.

# data[].attributes.headline
5. 파워 포인트를 열어 빈 곳에 C

# data[].attributes.body
5. 파워 포인트를 열어 빈 곳에 Ctrl+V를 하여 붙여 넣기를 한다.

6. 그리고 마우스 오른쪽 버튼을 클릭하여 '그룹화' - '그룹 해제'를 누른다.

7. 그룹 해제를 하고 나면 그래프 개별 요소를 파워 포인트로 수정할 수 있다.

# data[].attributes.body
1. IDS 연구에서 연구에 참여한 아기들의 집중력, 캐릭터에 대한 관심도 등에서의 개인차

2. 어머니들이 아기의 상태를 빠르게 파악하고 그에 따라 실험 자극(캐릭터 카드)에
집중할 수 있도록 효율적으로 유도하는 능력에서의 개인차

3. 아기에게 캐릭터의 이름을 학습시키는 상황에서 캐릭터의 이름을 설명하는 어머니의 방식 차이

# data[].attributes.body
참여자의 개인차 외에 변화를 일으키는 요인

1. Sampling block
: 표본 데이터가 군집되어 있을 경우, blocking 변인은 random effect에 포함

2. Longitudinal study
: 같은 참여자를 반복적으로 측정했을 경우, 예) 15명의 피험자 대상으로 3개월, 6개월, 9개월, 12개월 마다 스트레스 점수를 측정할 경우, 15명은 모집단에서 임의로 추출되었기 때문에 환자 간 시간에 따른 스트레스 점수 변화 양상이 다르다면 이를 random effect에 포함

# data[].attributes.attachment_link.title
박중희의 자유자재paper : 네이버 블로그

# data[].attributes.body
Fixed effect: constant across individuals
e.g.) age, sex, ethnicity
시간에 따라 변하지 않거나 /혹은 시간에 따라 규칙적인 변화가 있는 effect .
보통 LMM에서 fixed effect는 보고자 하는 독립변수로서, 독립변수를 조절하여 결과를 확인할 수있다.
Random effect: random and unpredictable
예측불가한 effect를 말한다.
e.g.) 날씨, 참가자/실험자 condition
https://youtu.be/w3NtGvlHFlk

# data[].attributes.attachment_link.readable_text
0:00 / 1:00•Watch full video

# data[].attributes.body
녹음 분석 연구에서 LMM 분석 시, Fixed Effect로 들어갈 수 있는 요인은 '화자'(의 개인차), 또는 '발화 문장'이 될 수 있을 것이다. 또한, Random Effect는 측정하고자하는 목적으로 예를 들어 prosodic features가 random effect로 투입될 수 있다.

Fixed Effect:variation explained by the IV of interest
Random Effect: variation not explained by the IV
(Harhare & Shah, 2021)

# data[].attributes.body
Random effect의 예

1. 피험자 변인

-음소지각 실험에서 영아의 어두운 상황에 대한 민감도; 민감도가 높을 때 후반 test에 대한 피로도가 더 상승 가능성?

2. 언어 항목 변인

-동사의 의미 관련 과제에서 음절수

-문장 읽기 과제에서 특정 단어와 단어간 조합의 통계적 비율 차이

# data[].attributes.body
long to wide
wide to long

# data[].attributes.body
(추가된 내용)
1. 일부 column(예: trial)만 wide로 변경
2. transform()을 사용하여 sum 열 추가
3. ifelse 함수를 사용하여 coding number 바꾸기(0,1 바꾸기)

# data[].attributes.headline
(추가된 내용)1. 막대그래프

# data[].attributes.body
(추가된 내용)
1. 막대그래프 그리기

# data[].attributes.headline
LME를 R로 분석하기 위해 데이터 코딩 시 유의사항

# data[].attributes.subject
LME를 R로 분석하기 위해 데이터 코딩 시 유의사항

# data[].attributes.body
LME를 R로 분석하기 위해 데이터 코딩 시 유의사항이 궁금합니다.
자료의 코딩을 CSV. 파일에서 어떠한 형태로 코딩을 하면 분석시 더 수월할 수 있는지, 주의할 사항은 없는지 궁금합니다.

# data[].attributes.body
# melt data into long format
library(reshape)dat <- dat1[, c("ID","ageD","HabitStim","TrialOrder","sex","AgeGroup","Same","Switch")]
dat <- melt(dat, id.vars = c("ID", "ageD", "HabitStim","TrialOrder","sex","AgeGroup"))