2013-08-15 4 views
3

는 I가 원하는 데이터를 I가액세스 요소

lmp<-function(modelobject){ 

if(class(modelobject !="lm" stop ("Not an object of class 'lm ") 
f<-(modelobject)$fstatistic 
p<-pf(f[1],f[2],f[3],lower.tail=F) 
attributes(p)<-NULL 
return(p) 

} 

그러나 선형 모델에서 F-통계, P 값에 액세스하기 R에서 사용 된 유용한 기능을 발견 이 함수를 사용하는 것은 클래스 lm의 객체가 아니라 12 개의 원소를 가진리스트이다. 목록의 각 요소는 lm에서 생성 된 요약입니다. , I을 포함하는 함수를 수정하려고 I리스트의 각 요소에 걸쳐 반복하여 기능을 변경 및 F 통계량의 p- 값을 반환 할

data[[1]]$fstatistic 

사용하여 액세스 할 수있는리스트 데이터의 각 개요 for 루프 <는 α- 함수 (modelobject) {

for (i in 1:12) { 
f<-(modelobject)[[i]]$fstatistic 
p<-pf(f[1], f[2], f[3], lower.tail=F) 
attributes(p)<-NULL 
return(p) 

} 
}  

을 lmpmod하지만 자체를 작성 오버 출력은 유지한다. 누구든지 목록의 각 요소에 액세스하고 F- 통계 p 값을 계산할 수 있도록이 함수를 수정하는 방법을 알려 줄 수 있습니까?

답변

3

는 예를 들어

lapply(data , function(x) { tmp <- summary(x)$fstatistic ; 
          pf(tmp[1] , tmp[2] , tmp[3] , lower.tail = F) 
          }) 

... NULL 값을 반환

# non-sensical lm! 
set.seed(123) 
y <- 1 + rnorm(10) 

# this makes a list of 5 lm's using the response data 'y' 
data <- replicate(5 , lm( y ~ 1 + rnorm(10)) , simpl = FALSE) 

# Call 'summary' on model object to calculate the f-statistic, and run 'pf' to get p-value 
sapply(data , function(x) { f <- summary(x)$fstatistic ; pf(f[1], f[2], f[3], lower.tail=F) }) 
    value  value  value  value  value 
0.53263166 0.03896285 0.70298727 0.57721440 0.45352619 
+0

보십시오. 실제로 fstatistic에서 p 값을 필요로하므로 데이터에 함수를 전달해야합니다. – tclarke

+0

나는이 문제가 현재 당신이이 방법을 사용하고 있다는 사실에 근거하고 있다고 가정한다. 접근 할 때 lm 객체에 대한 summary 메소드를 호출한다. 이것은 f-statistic을 생성한다. 원시 모드 적합성을 사용하면이 작업이 수행되지 않습니다. 내가 편집 할게 .... –

+0

고마워! 그거야. – tclarke