2017-02-13 2 views
1

...을 사용하여 R의 boot() 함수에서 추가 매개 변수를 statistic 매개 변수에 전달하는 방법을 결정하려고합니다. ?boot을 읽을 때 "은 첫 번째 인수가 항상 원래 데이터가되고 두 ​​번째는 부트 스트랩 샘플을 정의하는 인덱스, 빈도 또는 가중치 벡터가됩니다. 더 이상의 인수는...인수 통해 statistic그러나 나는이 사실 실제로 어떻게 보이는지 모르겠어요 여기 ...를 통해 추가 매개 변수를 전달하는 방법 ...

몇 가지 예제 코드입니다 -... statFun 일부 데이터를 받아 평균을 반환하는 함수입니다 추가하는 경우 매개 변수가 ... 명령을 통해 전달되면 해당 추가 매개 변수 주위에 데이터를 중앙에 놓은 다음 다시 RNS 평균 : 나는 boot 내에서이 기능을 적용하려고하면

statFun <- function(funData, indices, ...) 
{ 
    # Check to see if extra parameters 
    extraPar <- list(...) 
    if(extraPar[[1]]) 
    { 
    result <- mean(funData[indices] - extraPar[[2]]) 
    }else 
    { 
    result <- mean(funData[indices]) 
    } 

    # Return the value 
    return(result) 
} 

# Testing statFun 
testData <- 1:20 ; testIndices <- length(testData) 
statFun(testData, testIndices, FALSE) # Returns 10.5 
statFun(testData, testIndices, TRUE, mean(testData)) # Returns 0 

이제, 내가 문제로 실행 :

boot(testData, statFun, R = 100) 

나에게 Error in extraPar[[1]] : subscript out of bounds을 제공합니다. FALSEstatFun에 전달하려고해도 오류는 계속 발생합니다. 내 범위가 올바르지 않은 점을 이해할 수는 있지만 어떻게 극복 할 수 있습니까?

이 내 첫 SO 게시물입니다 ... 내가 ... 좀 더 나은 사용하는 방법을 이해하는 thisthis 게시물을 읽었습니다,하지만 눈부시게 분명 뭔가 빠진 것 같다, 그렇다면 내 질문 아무튼 알려 주시기 바랍니다 지침을 따르지 마십시오. 어떤 도움을 주셔서 감사합니다.

+0

나는 결과 20과 9.5를 얻는다. –

+0

필자는 도움이 '...'을 통해 여러 개의 인수를 전달할 수 있음을 의미하지만 실제로 이것을 수행하고 부팅을 위해 전달되도록하기 위해 이름을 지정해야합니다. 따라서'statFun <- function (funData, indices , center = FALSE, val = NULL) {', 나머지 함수를 적절하게 변경하십시오. 그런 다음'boot (testData, statFun, center = TRUE, val = mean (testData), R = 100) '를 사용하여 부팅을 호출합니다. – user20650

+0

실제로'...'에 대한 도움말은 argumnet이 말합니다 * "기타 ** 명명 된 인수 * * 불려질 때마다 변경되지 않고 통과되는 통계 용 "(emphasis mine) – user20650

답변

1

user20650 덕분에 조금 더 신중하게, 내가 필요한 있었는지 알아 냈 ?boot 예 읽기 - 단지 statFun 내에서 내 매개 변수 이름이 있는지 확인하고 내가 boot의 내 전화에서이 이름을 참조하는 것이 할 수 있습니다. 간단한 물건 : 나는 부팅 이내에을 적용하고 이름 addParscenterMean를 사용할 때

statFun <- function(funData, indices, addPars, centerMean) 
    { 
     # Check to see if extra parameters 
     if(addPars) 
     { 
     result <- mean(funData[indices] - centerMean) 
     }else 
     { 
     result <- mean(funData[indices]) 
     } 

     # Return the value 
     return(result) 
    } 

지금, 내가 기대하는 것을 얻을 :

boot(testData, statFun, R = 100, extraPar = TRUE, numCenter = mean(testData)) 
# Returns boot object of data centered around the mean. 

은 확실히 지금 ... 더 이해합니다.

관련 문제