구조방정식 모형(Structural Equation Modeling, 이하 SEM)은 관찰 변수의 공분산 구조를 잠재 변수와 관찰 변수으로 이루어진 구조로 설명하는 것이다. 예를 들어 시험을 여러번 보았을 때 한 학생의 시험점수는 관찰변수다. 한 시험에서 점수가 높은 학생은 다른 시험에서도 점수가 높다는 식으로 공분산 구조가 있다면 이것을 학생의 능력이라는 관찰되지 않은 잠재변수를 통해 설명하는 것이 SEM이다.
많은 통계 알고리듬은 주어진 제약조건 내에서 목적함수를 최적화시키는 방식을 통해 이뤄진다. 회귀분석에서 OLS는 잔차 제곱합을 최소화시키는 방법이고, ML은 우도를 최대화시키는 것이다. 여기서 잔차제곱합이나 우도가 목적함수가 되고 최소화나 최대화가 최적화에 해당한다.
optim 함수는 이렇게 목적함수를 최적화시켜주는 함수이다. 간단한 예제를 하나 살펴보자.
[code]
> x <- rnorm(100)
> y <- 3*x+2+rnorm(100)
> lm(y~x)
Call:
lm(formula = y ~ x)
R을 비롯한 프로그래밍 언어에서는 값들에 이름을 붙인다. 그런데 이름들이 서로 겹치면 곤란하기 때문에 이름공간(namespace)이라는 것을 두어 각각의 이름은 자기 이름 공간 안에서만 유효하도록 한다. R에는 두 종류의 이름 공간이 있는데 하나는 환경(environment)이고 또 하나는 패키지(package)다.
환경 안에 있는 함수는 기본적으로 같은 환경 안에 있는 값이나 함수들을 다룰 수 있다. 다음 예를 보자.
[code]
> a <- 1
> f <- function() a <- 2
프로그램은 자료와 자료를 다루는 함수들을 조합해서 만든다. 자료와 함수 중 어느 쪽을 중시하느냐에 따라 객체지향 프로그래밍과 함수형 프로그래밍으로 나눌 수 있다. R은 함수형 프로그래밍 언어이지만 객체지향 프로그래밍 기법도 지원한다.
R은 LISP이라는 프로그래밍 언어에서 비롯되었다. LISP은 인공지능 연구를 위해 만들어진 언어로서 프로그램을 프로그램할 수 있는 강력한 기능을 가지고 있다. 이것을 메타 프로그래밍이라고 하는데 R도 마찬가지 기능이 있다.
R에서는 텍스트를 다루는 다양한 함수들을 제공한다. 보통 한글이나 워드 같은 워드프로세서에서 '편집' 메뉴에 '찾기'와 '바꾸기'에 해당하는 함수들이 있는데 R에도 마찬가지다. '찾기'에 해당하는 함수에는 grep, regexpr, gregexpr이 있고 '바꾸기'에 해당하는 함수에는 sub와 gsub가 있다.
EMACS는 노트장이나 울트라에디터와 같은 텍스트편집기(editor)이다. 주로 유닉스/리눅스 환경에서 많이 사용된다. EMACS라는 이름은 'Editor MACroS'의 약자이다. 이름에서도 드러나듯이 EMACS는 다양한 매크로(작은 프로그램)들로 이뤄진 편집기다. 70년대에 개발되어 30년 넘게 쓰이고 있는 이 편집기를 아직도 쓰는 이유는 그동안 개발된 무수히 많은 매크로들 덕분에 다른 편집기에서는 좀처럼 할 수 없는 일들을 할 수 있다.
R에서 문항반응이론에 기반한 검사 분석을 실시하려면 ltm 패키지를 사용하면 된다.
이분 반응(binary response)인 경우 응답을 0과 1로 코딩하여 행렬로 만든다. 이때 각 열은 문항(item)을, 행은 피검자(examinee)를 나타낸다.
만약 자료가 2개 이상의 선택지로 된 응답을 그대로 코딩한 것일 경우에 정답과 비교해서 맞으면 1, 틀리면 0으로 다시 코딩을 해줘야 한다. mult.choice 함수를 사용하면 이런 채점을 할 수 있다.