2014-10-14 11 views
0

이것은 (+ 1 m)는 나를이비상 테이블과 신뢰 구간

내가

datatable<-array(c(1,2,3,4,5,6,dim=c(3,2)) 
datatable<-cbind(datatable,rowSums(datatable)) 
datatable<-rbind(datatable,colSums(datatable)) 

여기에 대비 한 테이블을 가지고 간단한 예, m = 3, N = 2 내 문제를 설명하자 x (n + 1) = 4x3 표. 이제, 새로운 mxn 배열이 필요합니다. 여기서 ij 번째 입구는 예상 datatable [i, j]에 대한 신뢰 구간 (원하는 경우 크기 2의 목록)입니다. 아래의 추정 데이터 테이블에 대한 간격을 계산하는 함수이다 [I, J] 인수로부터 < -datatable [I, J]와 B <는 -datatable [난, N + 1]

CIfunction<-function(a,b) c(-1,1)+a*b 

I 희망 그것은 너무 지저분하지 않습니다, 나는 쉬운 예를 생각할 수 없습니다.

어떻게 우아하게 이러한 테이블을 만들 수 있습니까? 실제 예제에서, 이것은 임의의 contingency 테이블을 가져와 해당 CI 테이블을 리턴해야하는 함수입니다.

이미 이중 루프를 사용하여 발견했습니다. j, 그러나 mapply/outer 또는 기타를 사용하여 우아한 방식으로 할 수있는 무언가와 같은 냄새가납니다.

+0

첫 줄에 닫는 괄호가 없습니다. 더 나은 설명이 도움이 될 것입니다. 예상 한대로 for-loop를 사용한다면 질문을 편집하여 포함시켜야합니다. ("신뢰 구간 함수"는 매우 자의적 인 것처럼 보이며 전달하려는 인수가 명확하지 않습니다.) –

답변

0

귀하의 의견과 답변에 감사드립니다. 나는 ilir이 임의의 CI 함수에 제공 한 (우아한) 메소드를 일반화하는 데 어려움이 있었다. 나는 위에서 언급 한 이중 루프를 끝내었다. 위의 문제에 대한 내 해결책은 다음과 같습니다.

CItable<-function(datatable,CIfunction) 
{ 
m<-dim(datatable)[1]-1 
n<-dim(datatable)[2]-1 

CItable<-array(NA,dim=c(m,2*n)) 
for(i in 1:m) 
    { 
    for(j in 1:n) 
    { 
     tempint<-CIfunction(datatable[i,j],datatable[i,n+1]) 
     CItable[i,2*j]<-tempint[2] 
     CItable[i,2*j-1]<-tempint[1] 
    } 

    } 
return(CItable) 
} 
0

아래의 코드는 R이 벡터를 재활용하는 방법 (under what circumstances does R recycle?)에 의존하기 때문에 약간의 속임수가 적용됩니다. arraymatrix 개체는 단지 접힌 벡터 (열 단위로 저장 됨)입니다. 당신이 행과 열 합계없이 datatable를 저장하고 인쇄 만에 그들을 계산, 그러나, 내가 제안 않는 행동을

datatable <- array (1:6, dim=c(3,2)) 
datatable <-cbind(datatable,rowSums(datatable)) 
datatable <-rbind(datatable,colSums(datatable)) 

# last column recycled as necessary 
lower <- -datatable[1:3, 1:2] * datatable[1:3, 3] 
upper <- -lower 
CIlist <- list(lower, upper) 

을 이해하면 그것은이 같은 트릭을 마련하기 어렵지 않다.