2012-09-18 2 views
1

lm()을 R으로 사용하여 일련의 (실제로 93) 별도의 선형 회귀 분석에 적합합니다. R lm() 도움말 설명서에 따라 :일련의 독립적 인 적합을 위해 R에서 lm()을 사용합니다

"응답이 매트릭스 인 경우 선형 모델은 매트릭스의 각 열에 최소 제곱으로 따로 따로 맞추어집니다."

Y 응답 행렬에 누락 된 데이터 요소가 없으면 정상적으로 작동합니다. 누락 된 점이 있으면 각 회귀를 사용 가능한 데이터로 맞추는 대신 모든 열에 누락 된 데이터 요소가있는 모든 행이 삭제됩니다. lm()이 Y의 모든 열에 독립적으로 맞아야하며 개별 열에 누락 된 데이터 요소가있는 행을 삭제하지 않도록 지정하는 방법이 있습니까?

+1

왜 sapply'의 일부 변화 (1:93, 함수 (j) lm (y [, j] ~ x)' –

답변

3

당신이 Y1, Y2, ..., YnX 사이 n 회귀 분석을 찾고 있다면, 당신은 lm()로 오히려 사용하도록 지정하지 않는 R의 apply functions :

# create the response matrix and set some random values to NA 
values <- runif(50) 
values[sample(1:length(values), 10)] <- NA 
Y <- data.frame(matrix(values, ncol=5)) 
colnames(Y) <- paste0("Y", 1:5) 
# single regression term 
X <- runif(10) 

# create regression between each column in Y and X 
lms <- lapply(colnames(Y), function(y) { 
    form <- paste0(y, " ~ X") 
    lm(form, data=Y) 
}) 

# lms is a list of lm objects, can access them via [[]] operator 
# or work with it using apply functions once again 
sapply(lms, function(x) { 
    summary(x)$adj.r.squared 
}) 
#[1] -0.06350560 -0.14319796 0.36319518 -0.16393125 0.04843368 
+0

Andy, 상세한 답변을 주셔서 감사합니다. –