Translate

2017년 8월 21일 월요일

R의 고전 검사 - 3개 이상 그룹에서 평균값의 비교 One Way ANOVA



 3개 이상의 집단에서 평균을 비교하는 경우 t 검정 대신 분산분석 (ANOVA)를 사용합니다. 일원배치 분산분석 (One Way ANOVA) 역시 통계 분석의 기본적인 방법으로 널리 사용됩니다. 앞서 예제를 확장해서 각 30명 씩, A,B,C 반 남학생의 키를 측정했다고 가정합니다. 


 일단 테스트를 위한 가상 데이터를 만듭니다. 


> set.seed(1234)
> A<-rnorm span="">
> set.seed(123)
> B<-rnorm span="">
> set.seed(12345)
> C<-rnorm span="">


 문제는 이러면 각각의 A/B/C 라는 벡터만 만들어졌다는 것입니다. 이대로 anova에 사용되는 aov를 입력하면 에러가 납니다. 

> out=aov(A,B,C)
Error: $ operator is invalid for atomic vectors

 이제 데이터 프레임을 만드는 방법에 대해서 설명드리겠습니다. 우리는 아래와 같은 데이터를 만들어야 합니다. 


       키 (height)  반 (class)

1         173         A
2         171         B
3         168         C
.......

 이와 같은 형태의 데이터는 실제 우리가 다루는 데이터에서 흔히 볼 수 있는 구조이며 이를 정돈된 데이터 혹은 말끔한 데이터 (Tidy data)라고 합니다. 물론 우리가 보는 기초 자료 가운데는 이렇게 잘 정리되지 않은 것도 상당수라 실제로는 정리하는 과정을 거쳐야 합니다. 여기서는 A/B/C 세 반 자료를 정돈된 형태로 바꿔보겠습니다. 


 방법은 각 반의 가상 데이터를 위의 형태로 정리한 후 rbind 명령어로 붙이는 것입니다. data.frame 명령어를 이용해서 3개의 데이터 프레임을 만들고 합칠 것입니다. 우선 data.frame을 만들겠습니다. 


> DFA<-data .frame="" class="" height="" span="">
> DFA
   height....A Class.....A.
1     163.9647            A
2     171.3871            A
3     175.4222            A
4     158.2715            A
5     172.1456            A
6     172.5303            A
7     167.1263            A
8     167.2668            A
9     167.1777            A
10    165.5498            A
11    167.6140            A
12    165.0081            A
13    166.1187            A
14    170.3223            A
15    174.7975            A
16    169.4486            A
17    167.4450            A
18    165.4440            A
19    165.8141            A
20    182.0792            A
21    170.6704            A
22    167.5466            A
23    167.7973            A
24    172.2979            A
25    166.5314            A
26    162.7590            A
27    172.8738            A
28    164.8817            A
29    169.9243            A
30    165.3203            A


 위에서 data.frame을 이용해서 각각 A 데이터에 있는 키와 여기에 속한 그룹에 A라는 범주형 데이터를 붙였습니다. 다만 나중에 합치기 위해서는 변수명도 통일해야 합니다. colnames 명령어를 이용해서 height와 class로 통일하겠습니다. 


DFA<-data .frame="" class="" height="" span="">
colnames(DFA)<-c height="" lass="" span="">
DFA
DFB<-data .frame="" class="" height="" span="">
colnames(DFB)<-c height="" lass="" span="">
DFB
DFC<-data .frame="" class="" height="" span="">
colnames(DFC)<-c height="" lass="" span="">
DFC

 이렇게 만든 데이터 프레임 셋을 연결합니다. 


DF2<-rbind span="">


 이제 DF2라는 데이터 프레임에 90개의 관측치와 2개의 변수 (키와 반)를 지닌 데이터를 성공적으로 만들었습니다. (DF2를 R에서 실행시키면 알 수 있습니다) 일원배치 분산 분석을 해보겠습니다. 


> out=aov(height~Class, data=DF2)
> summary(out)
            Df Sum Sq Mean Sq F value   Pr(>F)    
Class        2  560.4  280.18   12.65 1.51e-05 ***
Residuals   87 1927.1   22.15                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1


 방법은 간단합니다. aov(결과변수~독립변수, data=데이터프레임 이름) 으로 객체를 만들고 summary로 내용을 보면 됩니다. 여기서는 반에 따라서 키의 차이가 있는지 보는 것이기 때문에 독립변수는 반이 되고 결과(종속)변수는 키가 됩니다. 


 결과에서 F 값이 12.65에 P 값은 1.51e-05가 나왔습니다. 즉 P=0.0000151입니다. P<0 .05="" nbsp="" span="">


 다음에는 이 내용에 대해서 좀 더 깊이있게 들어가 보겠습니다. 

함께 모여서 헤엄을 치는 신비한 투명 생물 살프 (Salp)



(Credit: University of Oregon)


 살프(Salp)는 투명한 몸을 지닌 독특한 생물체로 여러 개체가 모여 하나의 긴 사슬 같은 개체를 이루는 특징을 가지고 있습니다. 각 개체의 길이는 1-10 cm 정도이지만, 이들이 모이면 4-5 m 정도의 긴 체인 같은 군체를 형성할 수 있습니다. 살프에 대해서 더 자세히 알고 싶다면 아래 포스트를 추천합니다. 




 살프는 바닷물을 흡수한 후 여기서 플랑크톤을 걸러내고 다시 이를 오징어나 문어류와 비슷하게 펌프로 밀어내 추진력을 만듭니다. 흥미로운 부분은 왜 같이 움직이느냐는 점입니다. 오레곤 대학의 연구팀은 이 의문을 풀기 위해서 수조에서 유체역학적 실험을 진행했습니다. 




(동영상) 


 그 결과 여러 번의 워터 제트를 연속적으로 생성하므로써 더 효과적으로 움직일 수 있다는 사실이 밝혀졌습니다. 이렇게 제트 추진을 하는 생물체의 문제점은 한 번 속도를 내고 난 후 다음 제트 분출까지 속도가 느려진다는 점인데, 살프는 여러 개체가 제트를 분사해서 이 문제를 해결하는 것입니다. 군체가 일정한 속도를 유지할 수 있고 여러 개체가 모여 저항도 줄일 수 있으니 속도를 더 빠르게 만들 수 있습니다. 살프는 기본적으로 여과섭식자이기 때문에 적당한 속도로 움직이기만 하면 굶을 걱정은 없다는 장점이 있습니다. 


 마지막으로 흥미로운 부분은 해파리를 닮은 외형에도 불구하고 살프가 사실은 척삭동물(Chordata)에 속한다는 점입니다. 척삭동물문에는 우리 같은 척추동물아문 외에 멍게 등이 속한 피낭동물아문(혹은 미삭동물아문)이 있으며 여기에 탈리아강 살파목(Salpida)이 있습니다. 해파리보단 인간에 더 가까운 생물이기 때문에 내부에는 소화기관은 물론 심장과 혈관계, 눈까지 갖추고 있는 여러 모로 흥미로운 생물체입니다. 


 참고 

Kelly R. Sutherland et al. Hydrodynamic advantages of swimming by salp chains, Journal of The Royal Society Interface (2017). DOI: 10.1098/rsif.2017.0298 





세계 최대의 지하 자전거 보관소를 건설하는 네덜란드




(When it reaches full capacity at the end of 2018, the Stationsplein Bicycle Parking facility will be able to accommodate 12,500 bicycles(Credit: Gemeente Utrecht))





(Utrecht cyclists will have access to the facility 24 hours per day, seven days a week, and users with a public transport chip card can park up for the first 24 hours free of charge(Credit: CU2030))

2017년 8월 20일 일요일

아메바 안에서 살아가는 박테리아 발견



(A cluster of spring-loaded daggers inside a bacterium. Green shows them in their 'loaded' form, red after the dagger has been launched. Credit: Leo Popovich)


 아메바라는 단어는 사실 명확한 정의가 있기 보다는 아메바 운동을 하는 단세포 진핵생물을 뜻하는 단어로 볼 수 있습니다. 대부분은 근족충류에 속하는 단세포 동물로 박테리아를 먹으면서 살아가는 단세포 동물입니다. 흔히 매우 단순한 생명체로 생각하지만, 생각보다 생활사가 복잡하고 다양한 생존 전략을 가진 것으로도 유명합니다. 


 그런데 다양한 생존 전략을 가진 것은 아메바만의 이야기는 아닙니다. 놀랍게도 아메바 안에서 살아가는 박테리아가 있습니다. 아메바필루스 (Amoebophilus)라는 박테리아는 비엔나 대학의 연구자들에 의해 수년 전 그 존재가 알려졌는데, 아메바 안에서 생존이 가능할뿐만 아니라 그 안에서 번성하는 박테리아입니다. 


 어떻게 이런일이 가능한지 알아내기 위해 취리히에 있는 스위스연방공과대학 (ETH Zurich)의 과학자들은 이 작은 박테리아의 구조를 연구했습니다. 그 결과 아메바필루스들이 아메바 안쪽으로 들어가기 위한 특수한 도구를 가지고 있다는 사실을 발견했습니다. 이 도구는 마치 스프링이 달린 단도 (spring-loaded dagger)처럼 생겨 아메바의 세포막을 찢고 안쪽으로 들어갈 수 있는 것입니다. 


 일단 세포막을 절개한 후 안으로 들어가면 그 다음 문제는 안에서 소화되지 않고 살아남는 일입니다. 물론 아메바필루스는 특별한 해결책을 가지고 있습니다. 아메바의 소화효소를 무력화시킬 수 있는 화학물질을 가지고 있어 아메바 안에서도 소화되지 않을 뿐 아니라 그 안에서 증식해서 번성할 수 있습니다. 이를테면 아메바 안에서 기생하는 박테리아라고 할 수 있습니다. 


 아메바필루스의 놀라운 적응 능력은 지구상 어디든지 적응해서 살아가는 박테리아의 다양한 생존 능력을 보여주는 사례 가운데 하나입니다. 흥미로운 사실 가운데 하나는 초기 진핵 생물의 진화에서 일부 박테리아들이 초기 진핵 생물의 체내에서 살아남아 미토콘드리아나 엽록체 같은 세포 소기관이 되었다는 사실입니다. 아메바필루스는 이것이 지금도 가능하다는 점을 보여주고 있습니다. 


 참고 


"In situ architecture, function, and evolution of a contractile injection system" Science (2017). science.sciencemag.org/lookup/ … 1126/science.aan7904 


태양계 이야기 641 - 인공 일식을 만드는 프로바 - 3 탐사선



(Due to launch together in 2020, the two satellites making up Proba-3 will fly in precise formation to form an external coronagraph in space, one satellite eclipsing the Sun to allow the second to study the otherwise invisible solar corona. Credit: ESA)


 일식이 일어나면 보통 태양의 강력한 빛에 가려 보이지 않던 주변의 코로나를 관측할 수 있습니다. 이런 이유로 태양을 연구하는 과학자들은 인공 햇빛 가리개를 이용해서 태양 주변의 코로나를 관측해왔습니다. 유럽 우주국 (ESA)의 천체물리학자들은 우주에 인공 일식을 일으키는 미니 탐사선을 이용해서 태양을 관측할 계획입니다. 


 2020년 발사 예정인 프로바 - 3 (Proba - 3)는 1m가 넘지 않는 소형 탐사선이지만, 두 대가 적당히 떨어진 위치에서 코로나그래프 (coronagraph. 태양을 가려서 코로나를 관측하는 장치)를 만들기 때문에 마치 길이가 150m 정도 되는 대형 코로나그래프를 만들 수 있습니다. 더구나 대기의 산란이 없는 우주에서 관측을 하기 때문에 관측 정확도는 더 올라가게 됩니다. 


 단 프로바 - 3는 지구 주변을 공전하기 때문에 항상 태양을 향하는 것은 아니며 19.6시간의 공전 주기 중 6시간 정도 관측이 가능합니다. 물론 이 정도라도 관측 시간은 충분하다고 할 수 있습니다. 그보다 문제는 떨어진 두 개의 위성이 정확히 위치를 잡는 것입니다. 어떤 결과가 나올지 궁금한데, 기술적으로는 충분히 가능하지 않을까 생각합니다. 


 참고 

자율 주행 휠체어


(Photo: Panasonic)


 인류의 오랜 꿈이었던 자율 주행 기술은 21세기 초반에 상용화가 유력해지고 있습니다. 이미 실제 도로에서 많은 자율주행차가 테스트 중이고 반자율 주행 능력을 지닌 자동차도 이미 등장한 상태입니다. 하지만 자율 주행 기술이 자동차에만 활용되지는 않습니다. 


 최근 싱가포르와 일본에서 자율 주행 휠체어가 테스트에 들어갔습니다. 자율 주행 휠체어는 뭔가 이상한 이야기같지만, 전혀 이상하지 않은 시도인게 실제 이를 사용하는 환자나 노약자가 휠체어를 찾기도 힘들고 휠체어를 밀어줄 사람을 찾기는 더 힘들기 때문입니다. 병원이나 공공 장소에서 노약자들을 안전하게 목적지까지 옮겨줄 자율 주행 휠체어는 노령화 시대에 큰 도움이 될 것입니다. 


 싱가포르 - MIT의 합작인 SMART (Singapore-MIT Alliance for Research and Technology)는 2016년부터 창기 종합병원 (Changi General Hospital)에서 테스트를 진행하고 있습니다. MIT의 컴퓨터 과학 및 인공지능 연구소의 다니엘라 루스(Daniela Rus, director of MIT’s Computer Science and Artificial Intelligence Laboratory)가 이끄는 연구팀은 MIT와 싱가포르의 병원에서 2대씩 자율 주행 휠체어의 성능과 안전성을 검증하고 있습니다. 이 휠체어는 자율 주행차와 비슷하게 라이더(LIDAR) 같은 센서를 이용해서 주변 지형과 장애물을 감지합니다. 



(동영상1) 


 파나소닉과 Whill, Inc. 사가 제작한 WHILL NEXT는 일본 도쿄의 하네다 공항에서 테스트를 시작했습니다. 역시 원리는 비슷하며 목적도 유사합니다. 휠 넥스트 역시 센서를 통해서 장애물과 사람을 감지하며 사용자를 목적지까지 옮겨줍니다. 



(동영상2) 


 자율 주행 휠체어는 가능하기만하다면 사실 지금 같은 노령화 시대에 큰 도움이 될 가능성이 있습니다. 다만 자율 주행차와 마찬가지로 안전성 확보가 중요하므로 충분한 검증이 이뤄진 후 도입되어야 할 필요가 있을 것입니다. 


 참고 





2017년 8월 19일 토요일

쥐의 뇌를 직접 컨트롤하다.


(This cross-section image of a mouse brain shows magnetic nanoparticles (red) that allow researchers to directly stimulate neurons using a magnetic field(Credit: Munshi et al, eLife))

(This transmitted light image shows sections of neural cells in the striatus that have been targeted for magnetic stimulation, in this case causing the mice to turn around(Credit: Munshi et al, eLife))


 약간 괴기스런 연구처럼 들리지만, 버팔로 대학의 연구자들이 살아있는 쥐의 뇌를 컨트롤해서 동작을 조절하는 데 성공했다는 소식입니다. 이미 자기장을 이용해서 기억력을 향상시키는 등의 연구는 사람에서 성공한 바 있습니다. 경두개 자기 자극 transcranial magnetic stimulation 기술을 활용한 것이죠. 




 하지만 이와 같은 자기장 자극 기술은 뇌를 정교하게 컨트롤하는 것과는 거리가 먼 기술입니다. 버팔로 대학의 연구팀은 여기서 한 걸음 더 나아가서 정교한 기술을 이용해 특정 신경 세포를 흥분시키는 기술을 개발했습니다. 


 일단 실험 동물에 유전자 조작을 통해 온도에 민감하게 반응하는 이온 채널을 (temperature-sensitive ion channels) 지닌 뉴런을 뇌에 삽입했습니다. 그리고 이 뉴런을 컨트롤하기 위해 특수한 자기 물질을 주입했습니다. 코발트 페라이트 코어 (cobalt-ferrite core)를 망간 페라이트 (manganese-ferrite)로 코팅한 미세 입자로 뇌에 주입한 후 자기장을 가하면 열이 나면서 특정 신경세포가 흥분하게 만들기 위한 것입니다. 


 연구팀은 이 기술을 이용해서 100마이크로미터 (0.1mm)에 불과한 작은 그룹의 뉴런까지 선택적으로 자극이 가능하다고 설명했습니다. 쥐의 운동 피질(motor cortex)을 자극하면 쥐가 달리기 시작하고 선조체 (striatum)를 자극하면 방향을 바꿨으며 더 깊은 곳을 자극하면 쥐가 멈췄다고 합니다. 일종의 원격조종 쥐 (remote-controlled rodent)를 만든 것인데, 물론 목적은 쥐를 로봇처럼 활용하는 것이 아니라 운동 신경과 행동을 조절하는 신경을 확인하고 이를 질병 치료에 응용하기 위한 것입니다. 


 쥐를 모델로 해서 포유류 뇌의 운동 조절 기전을 이해한다면 (당연히 사람을 대상으로 이런 실험을 하기는 어렵습니다) 파킨슨 병을 비롯한 운동 신경과 관련된 질환의 메카니즘을 규명하고 치료에 도움을 줄 수 있을 것입니다. 아무튼 자기장을 이용해서 쥐의 행동을 조절할 수 있다는 것 자체로 신기한 연구인 것 같스빈다. 


 참고