태그 보관물: r

r

내 데이터가 로그 정규 분포에 맞는지 확인하는 방법 맞는지 확인하고 싶습니다 . 내가

R내 데이터가 로그 정규 분포 또는 파레토 분포에 맞는지 확인하고 싶습니다 . 내가 어떻게 할 수 있습니까? 아마도 ks.test그렇게하는 데 도움이 될 수 있지만 데이터의 파레토 분포에 대한 및 매개 변수를 어떻게 얻을 수 있습니까?

α

케이



답변

… 방금 당신이 거기에 ‘회귀’태그가 있음을 알았습니다. 회귀 문제가있는 경우 x의 패턴에 따라 분포 형태를 평가하기 위해 반응의 일 변량 분포를 볼 수 없습니다. 어떤 종류의 회귀 또는 GLM의 반응 (y) 변수에 로그 정규 또는 파레토 분포가 있는지 여부를 확인하는 경우 관측마다 다른 방법으로 매우 다른 질문입니다 (그러나 기본적으로 비슷한 종류의 분석으로 이어짐 잔차에). 회귀 문제인지 명확히 할 수 있습니까? 내 대답은 현재 일 변량 로그 정규 또는 파레토를 평가하는 것과 관련이 있습니다.

거기에는 아주 다른 질문이 있습니다.

내 데이터가 로그 정규 분포에 맞는지 확인하는 방법

로그를 작성하고 정상적인 QQ 플롯을 수행하십시오. 분포가 목적에 충분한 지 확인하십시오.

내 데이터가 로그 정규 분포 또는 파레토 분포에 맞는지 R을 확인하고 싶습니다.

처음부터 당신이 고려하는 배포판 중 어느 것도 정확한 설명이 아니라는 것을 받아들입니다. 합리적인 모델을 찾고 있습니다. 즉, 표본 크기가 작 으면 합리적인 옵션을 거부하지 않지만 표본 크기가 충분하면 모두 거부합니다. 게다가 표본 크기가 크면 괜찮은 모델을 완벽하게 거부하고, 표본 크기가 작 으면 불량 모델을 거부하지 않습니다.

이러한 테스트는 실제로 모델 선택에 유용한 기초가 아닙니다.

간단히 말해서, 당신의 관심있는 질문- “이 데이터에 대한 좋은 모델은 무엇입니까? 추후의 추론이 유용 할 정도로 가까운 모델입니까?” 적합도 테스트에 의해 단순히 대답하지 않습니다. 그러나 경우에 따라 거부 규칙에서 나온 결정이 아니라 적합도 통계의 우수성에 따라 특정 유형의 적합 부족에 대한 유용한 요약이 제공 될 수 있습니다.

아마도 ks.test가 그렇게하는 데 도움이 될 수 있습니다.

첫째, 방금 언급 한 문제가 있습니다. 둘째, Kolmogorov-Smirnov 검정은 완전히 지정된 분포에 대한 검정입니다. 당신은 그들 중 하나가 없습니다.

많은 경우에, 나는 QQ 도표와 유사한 전시를 추천합니다. 이와 같은 오른쪽으로 치우친 경우 로그를 사용하는 경향이 있습니다 (파레토는 평소처럼 보이며 파레토는 지수 적으로 보일 것입니다). 합리적인 표본 크기에서 데이터가 지수보다 정규적으로 보이는지 또는 그 반대로 보이는지를 시각적으로 구별하는 것은 어렵지 않습니다. 먼저 각각의 실제 데이터를 가져 와서 그 샘플을 플로팅하십시오. 예를 들어 최소한 6 개의 샘플이 있으므로 어떻게 생겼는지 알 수 있습니다.

아래 예를 참조하십시오

데이터의 파레토 분포에 대한 알파 및 k 파라미터를 어떻게 얻을 수 있습니까?

모수를 추정해야하는 경우 MLE …을 사용하지만 파레토와 로그 정규를 결정하기 위해 그렇게하지 마십시오.

이 중 어느 것이 로그 정규인지 어떤 것이 파레토인지 알 수 있습니까?

여기에 이미지 설명을 입력하십시오

일반적인 QQ 플롯 (왼쪽 열)을 사용하면 데이터 세트 1의 로그가 상당히 직선 인 반면 데이터 세트 2는 오른쪽으로 기울임을 나타냅니다. 지수 도표를 사용하면 데이터 세트 1의 로그가 지수보다 오른쪽 꼬리가 옅은 반면 데이터 세트 2는 상당히 직선입니다 (오른쪽 꼬리의 값은 모형이 올바르더라도 약간 흔들리는 경향이 있습니다. 헤비 테일에서는 드문 일이 아닙니다. 왜냐하면 당신이보고있는 것과 비슷한 크기의 여러 샘플을 플롯 해야하는 이유 중 하나입니다.

이 네 가지 음모를 수행하는 데 사용되는 코드 :

qqnorm(log(y1))
qqnorm(log(y2))
qex <- function(x) qexp((rank(x)-.375)/(length(x)+.25))
plot(qex(y1),log(y1))
plot(qex(y2),log(y2))

회귀 유형 문제가있는 경우 (평균이 다른 변수와 함께 변하는 경우) 평균에 적합한 모형이있을 때 분포 가정 중 어느 것이 적합한 지 평가할 수 있습니다.


답변

물론 데이터 선택이 하나의 모델인지 다른 모델인지 확인하고 목표가 무한 차원 분포 분포 중에서 올바른 모델을 찾지 못한다고 가정하면 모델 선택 의 문제입니다 . 따라서 하나의 옵션은 AIC 를 사용하는 것입니다 (AIC 값이 가장 낮은 모델을 선호하므로 여기에서는 설명하지 않습니다). 시뮬레이션 된 데이터가있는 다음 예제를 살펴보십시오.

rm(list=ls())

set.seed(123)
x = rlnorm(100,0,1)

hist(x)

# Loglikelihood and AIC for lognormal model

ll1 = function(param){
if(param[2]>0) return(-sum(dlnorm(x,param[1],param[2],log=T)))
else return(Inf)
}

AIC1 = 2*optim(c(0,1),ll1)$value + 2*2

# Loglikelihood and AIC for Pareto model

dpareto=function(x, shape=1, location=1) shape * location^shape / x^(shape + 1)

ll2 = function(param){
if(param[1]>0 & min(x)> param[2]) return(-sum(log(dpareto(x,param[1],param[2]))))
else return(Inf)
}


AIC2 = 2*optim(c(1,0.01),ll2)$value + 2*2

# Comparison using AIC, which in this case favours the lognormal model.

 c(AIC1,AIC2)


답변

아마도 fitdistr ()?

여기에 이미지 설명을 입력하십시오

require(MASS)
hist(x, freq=F)
fit<-fitdistr(x,"log-normal")$estimate
lines(dlnorm(0:max(x),fit[1],fit[2]), lwd=3)


> fit
meanlog     sdlog
3.8181643 0.1871289



> dput(x)
c(52.6866903145324, 39.7511298620398, 50.0577071855833, 33.8671245370402,
51.6325665911116, 41.1745418750494, 48.4259060939127, 67.0893697776377,
35.5355051232044, 44.6197404834786, 40.5620805256951, 39.4265590077884,
36.0718655240496, 56.0205581625823, 52.8039852992611, 46.2069383488226,
36.7324212941395, 44.7998046213554, 47.9727885542368, 36.3400338997286,
32.7514839453244, 50.6878893947656, 53.3756089181472, 39.4769689441593,
38.5432770167907, 62.350999487007, 44.5140171935881, 47.4026606915147,
57.3723511479393, 64.4041641945078, 51.2286815562554, 60.4921839777139,
71.6127652225805, 40.6395409719693, 48.681036613906, 52.3489622656967,
46.6219563536878, 55.6136160469819, 62.3003761050482, 42.7865905767138,
50.2413659137295, 45.6327941365187, 46.5621907725798, 48.9734785224035,
40.4828649022511, 59.4982559591637, 42.9450436744074, 66.8393386407167,
40.7248473206552, 45.9114242834839, 34.2671010054407, 45.7569869970351,
50.4358523486278, 44.7445606782492, 44.4173298921541, 41.7506552050873,
34.5657344132409, 47.7099864540652, 38.1680974794929, 42.2126680994737,
35.690599714042, 37.6748157160789, 35.0840798650981, 41.4775827114607,
36.6503753230464, 42.7539062488003, 39.2210050689652, 45.9364763482558,
35.3687017955285, 62.8299659875044, 38.1532612008011, 39.9183076516292,
59.0662388169057, 47.9032427690417, 42.4419580084314, 45.785859495192,
59.5254284342724, 47.9161476636566, 32.6868959277799, 30.1039453246766,
37.7606323857655, 35.754797368422, 35.5239777126187, 43.7874313667592,
53.0328404605954, 37.4550326357314, 42.7226751172495, 44.898430515261,
59.7229655935187, 41.0701258705001, 42.1672231656919, 60.9632847841197,
60.3690132883734, 45.6469334940722, 39.8300067022836, 51.8185235060234,
44.908828102875, 50.8200011497451, 53.7945569828737, 65.0432670527801,
49.0306734716282, 35.9442821219144, 46.8133296904456, 43.7514416949611,
43.7348972849838, 57.592040060118, 48.7913517211383, 38.5555058596449
)


답변