시간을 기록하다

블로그 이미지
by 기록자
  • 18,126Total hit
  • 2Today hit
  • 30Yesterday hit

'2009/05'에 해당되는 글 6건

  1. 2009/05/27
    통계적 추론 : 추정, 가설 검정
  2. 2009/05/22
    Vim 에서 digraphs 를 이용한 특수문자 입력 방법
  3. 2009/05/20
    egrep 정규표현식 메타문자
  4. 2009/05/16
    통계학에서의 상관계수와 연관성
  5. 2009/05/15
    grep 명령어 옵션
  6. 2009/05/14
    리눅스 정규표현식과 메타문자
통계적 추론(Statistical Inference)

모집단으로부터 랜덤표본을 추출하여 자료를 수집·정리한 후, 자료로부터 얻어진 정보를 이용하여 모집단에 관한 추측이나 결론을 도출해내는 분석과정을 통계적 추론(statistical inference)이라 한다.
통계적 추론은 모수의 추정(estimation)과 모두에 대한 가설 검정(hypothesis testing)의 두 분야로 나뉜다.

추정(Estimation)

통계적 추론에서 가장 기본적인 추측의 대상은 모집단의 평균, 표준 편차, 비율, 상관계수 등과 같은 것이다. 표본을 이용하여 위에 열거된 모집단의 특성치에 대한 추정값과 그 정확성을 제시하는 과정을 추정이라 한다. 추정에는 하나의 값으로 모수를 추정하는 점추정과 모수가 포함될만한 구간을 제시하는 구간추정이 있으며, 구간추정이 더 보편적이다.

가설 검정(Hypothesis Testing)

통계조사나 통계적 실험을 하는 주된 이유 중의 하나는 새로운 사실이나 어떤 현상을 확인하고 주장하기 위해서이다. 따라서 이를 주장하기 위해 설정한 가설이 옳은지 그른지에 대한 증거가 자료에 뚜렷이 나타나는가를 판단할 필요가 있을 것이다. 즉, 가설검정에서는 표본이 갖고 있는 정보를 이용하여 그 가설의 진위 여부를 통계적으로 판단하는 것이다.


이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TRACKBACK 0 AND COMMENT 0

vim 에디터를 사용할 때 자주 있는 일은 아니겠지만 한번씩 특수문자를 사용해야 할 경우가 있다.
일반적인 경우에는 키보드의 숫자키와 함께 사용하는 특수문자(~!@#$%^ 등등)로 충분히 커버할 수 있지만, 수학기호같은 것들이 필요할 경우도 있을 것이다.
이런 경우에는 윈도우즈의 메모장에서 처럼 한글 자음 하나 치고나서 한자키를 눌러보세요.
그러면 아무런 일도 일어나지 않습니다.ㅋㅋㅋㅋ

이런 경우 vim 에서는 digraphs 라는 특수문자 입력을 위한 도구가 있습니다.
우선 ex mode 에서 :dig 를 입력합니다.

그러면 아래와 같은 화면의 특수문자표를 볼 수 있을 것이다.

그러면 화면에서 보이는 특수문자 중 자신이 사용해야 할 문자의 왼쪽편에 보이는 키를 기억하도록 한다.
저는 시그마 기호의 매칭 키를 기억하겠습니다. 시그마 기호이 매칭키는 S* 입니다.

그리고 q를 눌러 원래 화면으로 돌아 온 뒤 Ctrl+k 를 누르면 커서자리에 ? 표시가 보일 것입니다.

그 상태에서 시그마 기호의 매칭 키인 S* 를 입력합니다. 그러면 시그마 기호가 나타날 것입니다.

여기서 S 키를 대문자로 입력하는 것과 소문자로 입력하는 것에서 차이가 있습니다.
대문자로 입력하면 합을 구할 때 사용하는 시그마 기호가 나오고, 소문자로 입력하면 표준편차를 가리킬 때 사용하는 시그마 기호가 됩니다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TRACKBACK 1 AND COMMENT 0
egrep(extended grep)은 grep 명령어의 좀더 확장된 버젼이라 할 수 있다. 다시 말하면, 좀 더 확장된 정규표현식을 메타 문자를 사용할 수 있다. 다만 grep에서 사용할 수 있었던 \{와 \{ 는 지원하지 않는다. 그러나 egrep에서 사용할 수 있는 메타 문자를 이용하면 훨씬 편리하게 정규표현식을 사용할 수 있다.


 메타문자 기능
사용 예
설명

^
행의 시작 지시자
'^love'
 love로 시작하는 모든 행과 대응

$
행의 끝 지시자
'love$'
 love로 끝나는 모든 행과 대응

.
하나의 문자와 대응
'l..e'
 l 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응

*
선행 문자와 같은 문자의 0개 이상의 개수와 대응
' *love'
 0개 이상의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응

[ ]
[ ]사이의 문자집합 중 하나와 대응
'[Ll]ove'
 love나 Love를 포함하는 행과 대응

[^ ]
문자집합에 속하지 않는 한 문자와 대응
'[^A-KM-Z]ove'
 A와 K 사이의 범위에 포함되지 않거나, M과 Z 사이에 포함되지 않는 한 문자와 ove가 붙어 있는 문자열과 대응

+
선행문자와 같은 문자의 1개 이상의 개수와 대응
'[a-z]+ove'
 a와 z 사이의 1개 이상의 문자와 ove가 붙어있는 문자열과 대응(ex: move, love, ...)

?
선행문자와 같은 문자의 0개 혹은 1개와 대응
'lo?ve'
 l 다음에 o가 0개 혹은 1개이고 ve가 붙어있는 문자열과 대응. love 혹은 lve.

a|b
a 혹은 b와 대응
'love|hate'
 love 혹은 hate와 대응

( )
정규표현식을 묶어준다
'lov(able|ely)'
'(ov)+'
lovable 혹은 lovely와 대응
ov가 한 번 이상 등장하는 문자열과 대응

개인적으로 처음으로 정규식을 사용하게 되었던게 C#에서 문자열 처리를 해야할 때였다. C#에서는 좀더 확장된 기능을 사용할 수 있어서 편리했던 것 같다(물론 큰 차이는 없지만...). egrep에 좀 더 익숙해지면 아마도 충분히 편리하게 사용할 수 있을 것 같다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TRACKBACK 0 AND COMMENT 0
상관계수

연속형 자료값을 갖는 두 특성 사이의 관계를 객관적인 수치로 표현하기 위한 대표적인 방법으로 상관계수(correlation coefficient)가 있다. 두 특성에 대한 자료값이 모집단 전체일 경우에는 모상관계수(population correlation coefficient)라 하고 보통 ρ라고 표기하며, 표본인 경우에는 표본상관계수(sample correlation coefficient)라 하며 r이라 표기한다.

두 특성을 편의상 변수로 표현하면, 하나의 특성을 X, 나머지 다른 특성을 Y라 하자.
그러면 두 특성의 분산값들을 아래의 식을 이용하여 구할 수 있다.


위의 분산값들을 계산할 때 아래와 같이 정리하여 계산하면 더 쉽게 구할 수 있다.


표본상관계수는 아래의 식과 같이 정의된다.


위의 식과 같이 상관계수가 구해지면 구해진 r 값에 대해 다음과 같은 의미를 갖는다.

1) 표본상관계수 r은 두 특성의 관련성을 나타내는 척도이다. 연관성이 양이면 표본상관계수의 값도 양의 값을 갖는다.
2) 표본상관계수 r은 항상 -1과 1사이의 값을 갖는다.
3) 표본상관계수의 극단적인 값 r=-1 or r=1은 완전한 직선관계를 의미한다. r=-1 인 경우에는 모든 자료가 기울기가 음인 직선상에 놓여있고, r=1 인 경우에는 모든 자료가 기울기가 양인 직선상에 놓여있음을 의미한다.
4) 표본상관계수 r은 산점도에서 점들이 직선에 얼마나 가까이 모여 있는가를 나타내는 척도이다. 즉, r은 일반적인 연관성을 측정하는 것이 아니라 직선관계를 측정하는 척도이다. 상관계수에 따른 산점도에서의 분포 형태는 아래의 그림과 같다.


상관관계와 인과관계

자료를 분석할 때, 주의해야 할 점은 두 특성 사이의 상관계수의 값이 크다는 것이 두 특성 사이에 강한 인과관계가 항상 존재한다는 것을 의미하지는 않는다는 것이다.
예를 들면, 한 주일 동안에 발생한 독감환자의 수와 아이스크림 판매량의 상관계수가 음으로 나타났다. 두 특성 사이에 인과관계가 존재한다면 아이스크림을 먹는 것이 독감을 예방한다고 할 것이다. 여기서 우리가 고려해야 할 사항은 기온이다. 기온이 높아지면 자연스레 아이스크림의 판매량도 증가할 것이며 독감환자의 수는 감소하게 될 것이고 기온이 낮아지면 아이스크림의 판매량도 감소할 것이며, 독감환자의 수는 증가하게 되므로 두 특성 사이의 상관계수는 음의 값을 가질 것이다. 즉, 두 특성 사이의 인과관계는 아니라는 것이다. 이때 기온과 같이 두 특성, 아이스크림의 판매량과 독감환자의 수에 영향을 미치는 특성을 잠재특성이라고 한다. 따라서 두 특성 사이에 인과관계가 존재하는지를 파악하기 위해서는 통계적 추론보다는 상식이나 그 분야에서의 전문적인 지식을 활용해야 한다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TRACKBACK 0 AND COMMENT 0

이번에는 지난번 리눅스 정규표현식과 메타문자에 대한 포스팅에 이어서 실제로 그러한 메타문자를 자주 사용하게 되는 grep 이라는 명령어에 대해 기록한다.
우선 grep 이라는 이름의 기원은 ex 문서 편집기에서 찾을 수 있다. ex 편집기를 사용하여 특정 문자열을 찾으려면 프롬프트에서 다음과 같이 입력하여야 한다.
: g/pattern/p
g(global)가 pattern 앞에 오면 파일의 모든 행을 검색한다. 여기서 p는 print 를 말하는 것이다. 검색 패턴을 정규표현식이라고 부르기도 하므로, pattern을 RE(regular expression)로 대신해서 명령어를 다음과 같이 표시할 수 있다.
: g/RE/p
이와같이 grep 이라는 이름의 의미만 알아도 grep 이라는 명령어가 하는 일을 대략 추측할 수 있다. grep은 정규표현식(RE)을 파일 전체(g)에서 찾아 해당 행을 출력(p)한다. grep을 쓸 때의 장점은 패턴 검색을 위해 편집기를 실행시킬 필요가 없을 뿐만 아니라, ex나 vi보다 속도가 훨씬 빠르다.

아래의 표는 grep 명령어를 사용할 때 쓰이는 몇가지 옵션들이다.


 옵션 설명

 -b  검색 결과의 각 행 앞에 검색된 위치의 블록 번호를 표시한다. 검색 내용이 디스크의 어디쯤 있는지 위치를 알아내는데 유용하다

 -c  검색 결과를 출력하는 대신, 찾아낸 행의 총수를 출력한다.

 -h  파일 이름을 출력하지 않는다.

 -i  대소문자 구분을 하지 않는다.

 -l  패턴이 존재하는 파일의 이름만 출력한다.

 -n  파일 내에서 행 번호를 함께 출력한다.

 -s  에러 메시지 외에는 출력하지 않는다. 종료 상태를 검사할 때 유용하게 쓸 수 있다.

 -v  패턴이 존재하지 않는 행만 출력한다.

 -w  패턴 표현식을 하나의 단어로 취급하여 검색한다. 즉 \< 와 \> 를 양쪽에 사용한 것과 같은 효과를 낸다. grep에서만 사용할 수 있다.


이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TRACKBACK 0 AND COMMENT 0
리눅스(유닉스)의 정규표현식과 메타 문자를 기록합니다.

먼저 정규표현식이란 문자들의 패턴이라고 할 수 있습니다. 리눅스(혹은 유닉스) 시스템의 대부분의 프로그램에서 정규표현식은 슬래시 사이에 옵니다. 예를 들어 /love/ 는 /와/로 둘러쌓인 정규표현식이라 할 수 있으며, 해당 명령은 검색 시 행에서 love라는 패턴과 일치하는 것을 찾으라는 것입니다. 아래의 표는 이러한 정규표현식에 사용되는 메타 문자와 사용 예를 간단히 정리해 기록합니다.


 메타 문자
 기능  사용 예
 설명

 ^  행의 시작 지시자  /^love/  love로 시작하는 모든 행과 대응

$  행의 끝 지시자  /love$/  love로 끝나는 모든 행과 대응

.
 하나의 문자와 대응  /L..e/  L 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응

 *  선행 문자와 같은 문자의 0개 혹은 임의 개수와 대응  / *love/  임의 개수의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응

 []  []사이의 문자 집합 중 하나와 대응  /[Ll]ove/  love나 Love를 포함하는 행과 대응

[x-y]
 []사이의 문자 범위 내의 한 문자와 대응  /[A-Z]ove/  A부터 Z까지 한 문자가 ove로 끝나는 경우와 대응

[^]
 문자 집합에 속하지 않는 한 문자와 대응 /[^A-Z]/
 A와 Z 사이의 범위에 폼함되지 않는 한문자와 대응

 \  메타 문자로 사용하고 싶지 않은 경우  /love\./  love가 마침표(.)로 끝나는 경우와 대응

 \<
단어의 시작 지시자  /\<love/  love로 시작하는 단어를 포함하는 행과 대응

 \>
 단어의 끝 지시자  /love\>/  love로 끝나는 단어를 포함하는 행과 대응

\(..\)
 다음 사용을 위해 태그를 붙인다  /\(lov\)able\1er/  9개 태그를 쓸 수 있다. 왼쪽부터 순서대로 태그 번호가 매겨진다. 예를 들어, 패턴 lov는 태그 1에 저장되고, 뒤에는 \1 로써 태그 값을 사용할 수 있다. 왼쪽 예제에서 검색 패턴은 lovable에 lover가 붙어 있는 문자열이 된다.

 x\{m\}

x\{m,\}

 x\{m,n\}

 문자 x를 m번 반복한다

 적어도 m번 반복한다

m회 이상 n회 이하 반복한다
 o\{5,10\}  문자 o가 5회에서 10회 사이의 횟수로 연속적으로 나타나는 문자열과 대응
저작자 표시
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TRACKBACK 0 AND COMMENT 0

ARTICLE CATEGORY

분류 전체보기 (42)
개발 노트 (1)
초보의 알고리즘 (17)
프로그래밍 팁 (13)
기타 등등등등등 (11)

CALENDAR

«   2009/05   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

ARCHIVE

LINK