2016년 4월 12일 화요일

R로 ANOVA 분석하기 2 (3 way / Within-Subject Design)

저번에 2 factor , between-subject design 에 대해서 분산분석을 수행해보았다.

이번에는 within-subject design 에 대해 보도록 하겠다.

within 설계의 경우, 피험자 또한 하나의 factor로 간주되므로 데이터를 입력할 때 유의하자.

subject column이 있는 아래와 같은 형식으로 입력하여야 한다.
(A, B, C 는 factor)









데이터를 불러오고, attach 하는 과정은 between과 같다.

> summary(aov(score ~ A*B*C + Error(S/(A*B*C))))

Error term 을 따로 S/A*B*C 의 형태로 명시해주는 것을 알 수가 있다.

결과는 아래와 같다.
factor C가 유의하고, A*C의 교호작용이 있는 것으로 분석되었다.







2016년 4월 7일 목요일

R로 ANOVA 분석하기 1 (2 way / Between-Subject Design)

R을 사용해서 분산분석 (ANOVA) 돌리는 방법을 알아보자.

사용되는 함수는 모두 기본 패키지에 포함되어있다.

엑셀로 데이터를 입력하자


이원분산분석 (two-way ANOVA) 이다. factor가 2개 있다고 생각하면 된다.

모든 각각의 factor 에는 한 사람만 assign 되었다고 가정한다.
이를 Between-subject Design 이라고 한다.

(Within-subject Design 이나 Mixed 에서 하는 방법은 다음에 알아보겠다)


먼저 불러온다.

> data <- read.csv("C:\\ex\\file.csv", header=TRUE)

각 factor 이름으로 사용하기 위해서 attach 함수로 활성화한다.

> attach(data)

이제 factor1, factor2, output 으로도 각 성분에 접근할 수 있을 것이다.
이것으로 anova를 돌리는 것이다.

> result <- aov(formula = output ~ factor1 * factor 2)

> summary(result)


잘 나온 것을 확인할 수 있다.

R로 사후분석하기 (R in post-hoc analysis)

ANOVA 분석을 할 때, 유의한 factor의 level 이 3개 이상 되는 경우, 각 level 간의 차이는 ANOVA가 설명해줄 수 없다.

이때 활용하게 되는 것이 사후분석 (post-hoc analysis)이다.


R에서는 사후분석을 쉽게도와주는 PostHocTest 라는 함수가 있다.

먼저 필요한 라이브러리를 설치하자

> install.packages("DescTools")

> library(DescTools)

그 후 PostHocTest 함수를 쓰면 된다. 단 대소문자에 주의하자

> PostHocTest( aov(formula = value ~ factor1 * factor2), method="lsd", conf.level="0.95")



자세한 파라미터 값 설정은 아래 페이지를 참고하면 된다.
http://finzi.psych.upenn.edu/R/library/DescTools/html/PostHocTest.html



--추가 '17.12.05
SNK를 쓰는 경우
agricolae packages에 있는 SNK.test 함수를 바로 사용하면 된다.

> install.packages("agricolae")
> library(agricolae)
> SNK.test(aov(Time ~ A*B*C, data=exp), "A", group = TRUE, console=TRUE)

2016년 4월 4일 월요일

학회 내용의 저널 extension

학회에 썼던 논문을 저널에다가 내는 것은 연구 윤리적으로 큰 문제가 없을까?

 2015년 11월에 송 모군의 표절 사건도 지도교수의 학회 논문의 main contribution을 그대로 저널에 발표하면서 일어난 사건이었다.

 보통 학회 proceeding 에 실린 연구를 더 확장시켜서 저널에 publish 하는 케이스는 상당히 많으며, 사실은 연구자로서 매우 권장되는 일이기도 하다. 이런 것을 extension 이라고 표현하는데, 얼마나 새로운 내용을 추가해야 연구윤리에 위반되지 않을까

 결론부터 이야기한다면, 30% 이상의 새로운 contribution 이 있어야 한다는 것이 통념이다. 또한 학회 논문의 절반 이상을 그대로 옮겨다 쓸 수는 없다. 그대로 옮겨다 쓰기 위해서는 학회 프로시딩의 copyright 담당자에게 미리 permission을 받아야 한다.

 Extension work 를 저널에 낼 때는 "This paper is an extension of work originally reported in Proceedings of the International Conference on Social Science" 처럼 Editor가 미리 알 수 있도록 해주는 것이 중요하다.


 정리하자면,
 1. 30% 이상의 새로운 contribution (추가 실험, 추가 finding 등)
 2. 문장을 그대로 쓰기 위해서는 프로시딩 copyright 소유자에게 permission을 받아야함
 3. Editor 가 미리 알 수 있도록 알려주어야 함


 위 조건을 만족하면, 연구윤리에 저촉되지 않을 것이다.
 그러나 항상 강조하지만, 전공마다, 세부분야마다 연구윤리에 대한 기준은 다를 수 있기 때문에, 해당 세부전공의 연구자들과 이야기해서 그 기준을 파악하는 것이 신상(?)에 이롭다.

R로 통계 가설 검증하기

R을 사용해서 통계적 가설을 검증할 수 있다.

difference 와 standard error 에 대한 이론적인 설명은 생략하였다.

비율 간 비교
평균 간 비교



  1. independent, comparing two proportions
    • Z value 구하기
      • Z = difference / standard error
    • P value 구하기
      • p <- 2 * pnorm(z_value, lower.tail=FALSE)
    • p 값이 0.05보다 낮은지 검정
    • 한방 솔루션: prop.test
      • prop.test(matrix, conf.level=0.99, correct="FALSE")
  2. independent, comparing two means
    • t score 구하기
      • t_score <- mean difference / standard error
    • p value 구하기
      • p <- 2 * pt(t_score, df = 99)
    • 신뢰구간 구하기
      • mean_difference + qt(0.995, df=99) * se
      • mean_difference - qt(0.995, df=99) * se
    • 한방 solution: t.test
      • t.test(col1 ~ col2, data=dataname, conf.level=0.99)
  3. dependent, comparing paired samples (two proportions)
    • z value
      • z <- diff / se
    • p value
      • p <- 2 * pnorm(z_value, lower.tail=FALSE)
    • 한방 솔루션: mcnemar.test
      • mcnemar.test(matrix)
  4. dependent, comparing paired samples (two means)
    • t score
      • t <- diff / se
    • p_value
      • p_value <- 2 * pt(t_score, df=99, lower.tail=FALSE)
    • 한방 솔루션: t.test
      • t.test(x=col1, y=col2, data=dataname, paired=TRUE)


2016년 4월 2일 토요일

페이스북, 인공지능과 접근성을 연결하다

 페이스북이 장애인의 사용자 경험을 향상시키기 위해 인공지능을 활용한다는 소식이다.

 4월부터 선보일 자동화 캡션 도구는, 사진을 볼 수 없는 시각 장애인들에게 사진의 내용을 읽어준다는 것이 핵심이다.

 사진의 내용을 분석하기 위해 인공지능 (딥러닝) 등의 기술이 활용되었으며, 페이스북은 이런 기술이 장애인의 사용자 경험을 더욱 진일보 시킬 수 있을 것이라 믿고 있다.

 인공지능이 요즘 주목을 받고 있는 가운데, 이 기술의 활용 영역이 무궁무진함을 다시 느끼게 된다.

 한편 이 프로젝트 이끈 곳은 페이스북의 Empathy Lab, 공감랩이다. 기술이 발전할 수록 사람의 소통성이 증가하는 바람직한 사례가 아닐까 한다.


기사: http://www.usatoday.com/story/tech/news/2016/03/23/facebook-accessibility-people-with-disabilities/82026554/