2014-07-18 4 views
0

수천 개의 행에서 실행되는 데이터 스탬프가 [Var1, DD, MM, YYYY] 인 관찰 된 변수가있는 데이터 프레임이 있습니다. 매년 관찰 된 변수에 지수 분포 또는 감마 분포를 맞추고 매년 관련 매개 변수를 얻어야합니다.매년 반복하고 함수를 적용하십시오.

매트랩, 그냥

j=1 
k=1 

for i=1:(no_of_rows-1) 

    if year(i+1) = year(i) 
     temp_data_year(j) = Var1(i) 
     j=j+1 

    else [a,b]= gamfit(temp) 
     param(:,:,k) = [a,b] 
     k=k+1 
    endif 

end 

그래서 내가 변수 PARAM의 데이터에 매년 매개 변수를 얻을 것입니다.

이렇게 할 수있는 R이 있습니까?

감사합니다.

+3

'? by'를보고,'FUN' 매개 변수에'INDICES' 매개 변수와 배포판 피터 ('? MASS :: fitdistr')에 일년 변수를 넣으십시오. 행운을 빕니다. –

답변

0

이렇게하면됩니다.

# creates a sample dataset - you have this already 
set.seed(1)    # for reproducible example 
df <- data.frame(var1=c(rgamma(365,2,4),rgamma(365,3,5),rgamma(365,1,8)), 
       YYYY=rep(2012:2014,each=365)) 

# you start here... 
library(fitdistrplus) # for fitdist(...) 
aggregate(var1~YYYY,df,function(X)fitdist(X,distr="gamma")$estimate) 
# YYYY var1.shape var1.rate 
# 1 2012 1.891706 3.873906 
# 2 2013 2.812962 4.778191 
# 3 2014 1.031067 7.826776 

fitdistrplus 패키지에 fitdist(...)에 대한 설명서를 참조하십시오. 여러 피팅 알고리즘을 사용할 수 있습니다.

+0

그것은 효과가있다. 하지만 "densfun (x, ...) : NaN이 생성되었습니다."라는 경고 메시지는 거의 표시되지 않습니다. 그것에 대해 걱정해야합니까? – user2527808

+0

반드시 그렇지는 않습니다. 시작 매개 변수 추정치 ('fitdist (...)'에 의해 선택된)가 MLE와 너무 멀리 떨어져있을 수 있습니다. 적합성이 좋은지 확인하기 위해 데이터의 히스토그램에 대해 분포 함수를 플롯해야합니다. 또한,'start = ... '인수를 사용하여 시작 견적을 지정할 수 있습니다. 설명서를 읽으십시오. – jlhoward

관련 문제