태그 보관물: computational-statistics

computational-statistics

Julia는 통계 커뮤니티를 고수 할 희망이 있습니까? 시간을 제공하고 C / C

최근에 R-Bloggers의 게시물을 읽었으며 John Myles White 의이 블로그 게시물에 Julia 라는 새로운 언어에 대한 링크가 있습니다 . Julia는 JIT (Just-In-Time) 컴파일러를 활용하여 악의적 인 빠른 실행 시간을 제공하고 C / C ++와 동일한 속도의 속도를 제공합니다 (동일한 순서). , 동등하게 빨리하지 않음). 또한 R의 apply 문과 벡터 연산 대신 전통적인 언어로 프로그래밍을 시작한 사람들이 익숙한 정통 반복 메커니즘을 사용합니다.

줄리아의 멋진 타이밍에도 불구하고 R은 결코 사라지지 않습니다. 업계에서 광범위하게 지원되며, 무엇이든 할 수있는 수많은 멋진 패키지가 있습니다.

저의 관심사는 벡터화가 불가능한 자연의 베이지안입니다. 분명히 일련의 작업은 루프를 사용하여 수행해야하며 각 반복마다 많은 계산이 필요합니다. 이러한 직렬 루핑 작업에서는 R이 매우 느려질 수 있으며 C / ++는 작성하기에 적합하지 않습니다. Julia는 C / ++로 작성하는 것에 대한 훌륭한 대안으로 보이지만 초기 단계에 있으며 R에 대해 좋아하는 많은 기능이 부족합니다. 충분한 지원을 얻는다면 Julia를 계산 통계 워크 벤치로 배우는 것이 합리적입니다. 통계 커뮤니티에서 사람들이 유용한 패키지를 작성하기 시작합니다.

내 질문은 다음과 같습니다

  1. R을 사실상의 통계 언어로 만든 매력을 갖기 위해 Julia는 어떤 기능을 갖추어야합니까?

  2. Julia가 C / ++와 같은 저수준 언어를 배우는 것보다 계산이 많은 작업을 수행하는 것을 배우면 장단점이 무엇입니까?



답변

핵심은 Julia를 위해 라이브러리가 개발되기 시작하는지 여부입니다. Julia가 과제 R이 나쁜 물에서 R을 물 밖으로 날려 버린다는 것을 보여주는 장난감 예제 (복잡한 장난감이라 할지라도)를 보는 것이 좋습니다.

그러나 제대로 수행되지 않은 루프와 핸드 코딩 알고리즘은 R을 사용하는 사람을 알고있는 많은 사람들이 R을 사용하는 이유는 아닙니다. 태양 아래에서 거의 모든 통계 작업을 위해 누군가 R 코드를 작성했기 때문에이 알고리즘을 사용합니다. R은 프로그래밍 언어 이자 통계 패키지입니다. 현재 Julia는 전자입니다.

나는 거기에 도착할 수 있다고 생각하지만, 사용 가능한 통계 툴킷으로 여전히 어려움을 겪는 훨씬 더 많은 언어 (Python)가 있습니다.


답변

나는 다른 많은 의견에 동의합니다. “기대”? 확실한. Julia는 R과 Python / NumPy / Pandas 및 기타 시스템이 수년 동안 옳고 그른 일을 통해 많은 것을 배웠다고 생각합니다. 내가 나보다 똑똑하고 앞으로 통계 개발 환경의 기초가 될 새로운 프로그래밍 언어를 작성하고 싶다면 Julia와 매우 비슷할 것입니다.

이것은이 질문에 대한 답을 뒷받침하기까지 5 년이 걸릴 것이라고 말했다. 현재 Julia는 일상적인 사용자를 위해 R과 경쟁 할 수있는 통계 프로그래밍 시스템의 다음과 같은 중요한 측면이 부족합니다.

(시간이지나면서 업데이트 된 목록 …)

  • 선택적으로 정렬 된 요인 유형
  • 대부분의 통계 테스트 및 통계 모델
  • 읽고 쓰는 프로그래밍 / 재생 가능한 분석 지원
  • R 클래스 또는 심지어 Matlab 클래스 플로팅

R과 경쟁하기 위해 Julia와 애드온 통계 패키지는 깨끗하고 완전해야하며, 똑똑하지 않은 프로그래머가 아닌 사회 과학 분야의 대학원생들이 합리적으로 사용할 수 있어야합니다. 거기에 도달하기 위해 많은 작업이 있습니다. 어쩌면 어쩌면 어지러 울지도 모르고 어쩌면 다른 것 (R 3.0?)이 그것을 대체 할 것입니다.

최신 정보:

Julia는 이제 누락 된 데이터 / NA, 모듈 / 네임 스페이스, formula유형 및 model.matrix인프라, 플로팅 (정렬), 데이터베이스 지원 (아직 DataFrame은 아님) 및 키워드로 인수를 전달하는 DataFrame을 지원합니다. IDE (Julia Studio), Windows 지원, 일부 통계 테스트 및 일부 날짜 / 시간 지원도 있습니다.


답변

저에게있어 데이터 분석 언어에서 매우 중요한 것은 합리적인 기본 설정과 대화 형 지향 디자인을 갖춘 쿼리 / 관계형 대수 기능을 갖추는 것입니다. 이상적으로는 언어가 내장되어 있어야합니다. 내가 사용한 FOSS 언어가없는 IMO는 R조차도 효과적으로 수행하지 않습니다.

data.frame은 대화식으로 작업하기가 매우 어수선합니다. 예를 들어, 호출시 전체 데이터 구조를 인쇄하고, $ 구문은 프로그래밍 방식으로 작동하기 어렵고, 쿼리에는 중복 된 자체 참조가 필요합니다 (예 :DF[DF$x < 10] . 조인 및 집계가 어색합니다. Data.table은 이러한 성가신 대부분을 해결하지만 핵심 구현의 일부가 아니기 때문에 대부분의 R 코드는 해당 기능을 사용하지 않습니다.

파이썬의 팬더는 같은 결함으로 고통받습니다.

이러한 그립은 매우 까다로울 수 있지만 이러한 결함은 누적되어 결국 많은 시간이 소요되므로 전체적으로 중요합니다.

Julia가 데이터 분석 환경으로 성공하려면 사용자 친화적 인 테이블 데이터 유형에 대해 SQL 구문의 수하물없이 SQL 유형 연산자를 구현하는 데 노력을 기울여야한다고 생각합니다.


답변

Dirk와 EpiGrad가 말한 내용에 서명 할 수 있습니다. 그럼에도 불구하고 R은 틈새 시장에서 데이터 지향형 시스템이라는 고유 한 언어가되었습니다.

R은 특히 데이터 처리를 위해 설계되었으므로 벡터 중심이며 data.frames, factors, NA 및 속성과 같은 요소가 있습니다.
반면에 Julia의 유형은 숫자 성능 지향적이므로 스칼라, 잘 정의 된 저장 모드, 공용체 및 구조체가 있습니다.

이것은 양성으로 보일지 모르지만 MATLAB으로 통계를 시도한 모든 사람들은 그것이 실제로 아프다는 것을 알고 있습니다.

따라서 적어도 나를 위해 Julia는 몇 줄짜리 C 덩어리로 해결할 수없는 것을 제공 할 수 없으며 실제로 유용한 표현력을 많이 죽입니다.


답변

Julia가 Matlab을 대체하는 것을 볼 수 있는데, 이는 인류에게 큰 서비스가 될 것입니다.

R을 대체하려면 Neil G, Harlan 및 기타 사람들이 언급 한 모든 사항과 내가 믿지 못했던 한 가지 큰 요소, 응용 프로그램 및 라이브러리의 쉬운 설치를 고려해야합니다.

현재 Mac, Windows 또는 Linux 용 R 바이너리를 다운로드 할 수 있습니다. 다양한 통계적 방법으로 즉시 사용할 수 있습니다. 패키지를 다운로드하려면 간단한 명령 또는 마우스 클릭입니다. 그냥 작동합니다.

Julia를 다운로드하려고했는데 간단하지 않습니다. 바이너리를 다운로드하더라도 올바른 라이브러리를 얻으려면 gfortran을 설치해야합니다. 나는 소스를 다운로드하고 시도했다make 실제로 유용한 메시지없이 실패했습니다. 나는 컴퓨터 공학 학사 및 대학원 학위를 소지하고 있기 때문에 너무 기울어지면 주위를 찌를 수 있습니다. (아니요) 조 통계학자가 그렇게할까요?

R에는 방대한 패키지가있을뿐만 아니라 응용 프로그램의 바이너리와 거의 모든 패키지를 자동으로 만드는 상당히 정교한 시스템이 있습니다. 어떤 이유로 소스에서 패키지를 컴파일 해야하는 경우 (시스템에 적절한 컴파일러 등이 설치되어있는 한) 더 이상 어렵지 않습니다. 이 인프라를 무시하고 github을 통해 모든 작업을 수행하며 광범위하게 채택 할 수는 없습니다.

편집 : Julia와 장난하고 싶었습니다. 흥미로 보입니다. 두 가지 문제 :

1) 추가 패키지를 설치하려고 시도했을 때 (Julia에서 패키지를 잊어 버렸습니다) 오류가 발생하여 실패했습니다. 분명히 내 Mac에는 예상했던 make-like 도구가 없습니다. 그것은 실패 할뿐만 아니라 수동으로 삭제 해야하는 주위에 물건을 남겨 두지 않으면 다른 설치가 실패합니다.

2) 코드 줄에 일정한 간격을 둡니다. 나는 내 앞에 세부 사항이 없지만 매크로와 관련이 있으며 매크로와 괄호 사이에 공백이 없어 인수가 열립니다. 수년 동안 언어와 코드 형식을 개발했으며 실제로 함수 / 매크로 이름과 여는 괄호 사이에 공백을두기 때문에 이러한 종류의 제한은 실제로 버그가 있습니다. 일부 코드 형식 제한 사항을 이해하지만 줄 안에 공백이 있습니까?


답변

줄리아 언어는 매우 새롭습니다. 스포트라이트의 시간은 주 단위로 측정 할 수 있습니다 (개발 시간은 물론 몇 년으로 측정 될 수 있음에도 불구하고). 스포트라이트를받은 그 주들은 매우 흥미 진진한 주였습니다. 예를 들어 “지금 막 시작된 ​​Stanford의 최근 강연”을보십시오. 그러나 더 넓은 인프라와 패키지 지원 측면에서 요구하는 것은 훨씬 더 오래 걸릴 것입니다. 구체화하십시오.

그래서 R을 계속 사용하고 개발 대안을 염두에 두십시오. 작년에 많은 사람들이 Clojure를 개회했습니다. 올해 줄리아는 지배적 인 새로운 맛입니다. 우리는 그것이 붙어 있는지 볼 수 있습니다.


답변

Bruce Tate, 7 주 동안 7 개 언어의 저자. 여기 몇 가지 생각이 있습니다. 나는 후속 책을 위해 Julia를 위해 일하고 있습니다. 다음은 몇 주간의 플레이 후의 나의 의견입니다.

두 가지 근본적인 힘이 작용합니다. 첫째, 모든 언어에는 수명이 있습니다. R은 언젠가 교체 될 것입니다. 우리는 언제 모른다. 새로운 언어는 시간이 많이 걸리기 어렵습니다. 새로운 언어가 발전 할 때, 그것은 보통 압도적 인 고통 지점을 해결합니다.

이 두 가지는 관련이 있습니다. 나에게 우리는 R과 같은 언어를 중심으로 한 주제를보기 시작했습니다. 속도가 빠르지 않고 필요한 것보다 어렵습니다. 특정 성능 범위 내에서 생활하고 기존 도서관 내에 머무를 수있는 사람들은 괜찮습니다. 더 이상 필요로하지 않는 사람들은 더 많은 것을 찾기 시작했습니다.

문제는 컴퓨터 아키텍처가 변화하고 있으며이를 활용하기 위해서는 언어와 구조가 특정 방식으로 구성되어야한다는 것입니다. Julia의 동시성에 대한 관심은 흥미 롭습니다. 투명 배포와 프로세스 간 효율적인 데이터 이동과 같은 언어에 적합한 것을 최적화합니다. 일반적인 작업, 맵 및 변환 등에 Julia를 사용하면 함수를 호출하는 것입니다. 나는 배관에 대해 걱정할 필요가 없습니다.

줄리아가 하나의 프로세서에서 더 빠르다는 사실은 흥미롭지 만 R에게는 과도하게 피해를주지 않는다는 사실은 흥미로운 점은 프로세서가 성능을 위해 멀티 코어에 점점 더 의존함에 따라 기술 컴퓨팅 문제는 거의 이상적인 위치에 있다는 것입니다. 올바른 언어를 사용하면 최대한의 이점을 얻을 수 있습니다.

그 일을 도울 다른 기능은 실제로 매크로입니다. 언어의 속도는 지금 매우 강렬합니다. 매크로를 사용하면 더 크고 깨끗한 빌딩 ​​블록으로 만들 수 있습니다. 도서관을 보는 것은 흥미롭지 만 전체 그림을 말하지는 않습니다. 도서관의 성장을 살펴 봐야합니다. 줄리아의 궤적은 여기에 꽤 많이 있습니다.

Clojure는 R이 할 수있는 일을하는 기술적 언어가 없기 때문에 일부 사람들에게는 흥미 롭습니다. 나는 실제로 큰 팬입니다. 그러나 Clojure는 꽤 심각한 뇌 왜곡입니다. 기술 컴퓨팅을 수행해야하는 프로그래머에게는 Clojure가 있습니다. 엔지니어와 과학자에게는 적합하지 않습니다. 배울 것이 너무 많습니다.

그래서 나에게 Julia 또는 그와 비슷한 것이 언젠가 R을 대체 할 것입니다. 시간 문제입니다.