표본 크기, 최소값 및 최대 값에서 정규 분포를 재구성 할 수 있습니까? 중간 점을 사용하여 평균을 프록시 할 수 있습니다


14

나는 이것이 통계적으로 약간 끈적 거리는 것을 알고 있지만 이것이 내 문제입니다.

변수의 최소, 최대 및 샘플 크기를 말하는 많은 범위 데이터가 있습니다. 이러한 데이터 중 일부에는 평균도 있지만 많지는 않습니다. 각 범위의 변동성을 수량화하고 평균을 비교하기 위해 이러한 범위를 서로 비교하고 싶습니다. 분포가 평균 주위에 대칭이고 데이터에 가우시안 분포가 있다고 가정 할만한 충분한 이유가 있습니다. 이러한 이유로 나는 분포의 중간 점을 부재의 평균에 대한 프록시로 사용하여 정당화 할 수 있다고 생각합니다.

내가하고 싶은 것은 각 범위의 분포를 재구성 한 다음 그 분포에 대한 표준 편차 또는 표준 오류를 제공하는 데 사용하는 것입니다. 내가 가지고있는 유일한 정보는 샘플에서 관찰 된 최대 및 최소 정보이며 중간 점은 평균의 프록시입니다.

이 방법으로 나는 각 그룹에 대한 가중 평균을 계산하고, 내가 가지고있는 범위 데이터와 내 가정 (대칭 및 정규 분포)을 기반으로 각 그룹에 대한 변동 계수를 계산할 수 있기를 바랍니다.

R을 사용 하여이 작업을 수행 할 계획이므로 모든 코드 도움말도 감사하겠습니다.


2
최소 및 최대 및 최대 값에 대한 데이터가 있다고 말하는 이유가 궁금합니다. 나중에 예상 최소 및 최대 정보 만 제공합니다. 관찰되거나 예상되는 것은 무엇입니까?
Scortchi-Monica Monica 복원

미안, 그건 내 실수 야 최대 및 최소 데이터가 관찰됩니다 (실제 물체로 측정). 게시물을 수정했습니다.
green_thinlake 14

답변:


11

최소의 조인트 누적 분포 함수 및 최대 X ( N ) 의 시료에 대한 n은 평균 가우시안 분포 μ 및 표준 편차 σ는엑스(1)엑스()μσ

F(x(1),x(n);μ,σ)=Pr(X(1)<x(1),X(n)<x(n))=Pr(엑스()<엑스())홍보(엑스(1)>엑스(1),엑스()<엑스()=Φ(엑스()μσ)[Φ(엑스()μσ)Φ(엑스(1)μσ)]

여기서 는 표준 가우스 CDF입니다. x ( 1 ) & x ( n )에 대한 미분 은 결합 확률 밀도 함수를 제공합니다Φ()엑스(1)엑스()

에프(엑스(1),엑스();μ,σ)=(1)[Φ(엑스()μσ)Φ(엑스(1)μσ)]2ϕ(엑스()μσ)ϕ(엑스(1)μσ)1σ2

여기서 는 표준 가우스 PDF입니다. 모수를 포함하지 않는 로그를 삭제하고 항을 빼면 로그 우도 함수가 제공됩니다.ϕ()

(μ,σ;x(1),x(n))=(n2)log[Φ(x(n)μσ)Φ(x(1)μσ)]+logϕ(x(n)μσ)+logϕ(x(1)μσ)2logσ

This doesn't look very tractable but it's easy to see that it's maximized whatever the value of σ by setting μ=μ^=x(n)+x(1)2, i.e. the midpoint—the first term is maximized when the argument of one CDF is the negative of the argument of the other; the second & third terms represent the joint likelihood of two independent normal variates.

Substituting μ^ into the log-likelihood & writing r=x(n)x(1) gives

(σ;x(1),x(n),μ^)=(n2)log[12Φ(r2σ)]r24σ22logσ

This expression has to be maximized numerically (e.g. with optimize from R's stat package) to find σ^. (It turns out that σ^=k(n)r, where k is a constant depending only on n—perhaps someone more mathematically adroit than I could show why.)

Estimates are no use without an accompanying measure of precision. The observed Fisher information can be evaluated numerically (e.g. with hessian from R's numDeriv package) & used to calculate approximate standard errors:

I(μ)=2(μ;σ^)(μ)2|μ=μ^
I(σ)=2(σ;μ^)(σ)2|σ=σ^

It would be interesting to compare the likelihood & the method-of-moments estimates for σ in terms of bias (is the MLE consistent?), variance, & mean-square error. There's also the issue of estimation for those groups where the sample mean is known in addition to the minimum & maximum.


1
+1. Adding the constant 2log(r) to the log-likelihood will not change the location of its maximum, but converts it into a function of σ/r and n, whence the value of σ/r that maximizes it is some function nk(n). Equivalently, σ^=k(n)r as you claim. In other words, the relevant quantity to work with is the ratio of the standard deviation to the (observed) range, or equally well its reciprocal--which is closely related to the Studentized range.
whuber

@whuber: Thanks! Seems obvious with hindsight. I'll incorporate that into the answer.
Scortchi - Reinstate Monica

1

You need to relate the range to the standard deviation/variance.Let μ be the mean, σ the standard deviation and R=x(n)x(1) be the range. Then for the normal distribution we have that 99.7% of probability mass lies within 3 standard deviations from the mean. This, as a practical rule means that with very high probability,

μ+3σx(n)
and

μ3σx(1)

Subtracting the second from the first we obtain

6σx(n)x(1)=R
(this, by the way is whence the "six-sigma" quality assurance methodology in industry comes). Then you can obtain an estimate for the standard deviation by
σ^=16(x¯(n)x¯(1))
where the bar denotes averages. This is when you assume that all sub-samples come from the same distribution (you wrote about having expected ranges). If each sample is a different normal, with different mean and variance, then you can use the formula for each sample, but the uncertainty / possible inaccuracy in the estimated value of the standard deviation will be much larger.

Having a value for the mean and for the standard deviation completely characterizes the normal distribution.


3
That's neither a close approximation for small n nor an asymptotic result for large n.
Scortchi - Reinstate Monica

1
@Stortchi 글쎄, 나는 그것이 좋은 추정이라고 말하지는 않았다. 그러나 나는 문제에 대한 양적 감각을 얻기 위해 항상 매우 거친 솔루션을 쉽게 구현하는 것이 좋다고 생각한다. 예를 들어이 질문에 대한 다른 답변에서 설명한 것과 같은 정교하고 효율적인 접근 방식.
Alecos Papadopoulos

I wouldn't carp at "the expectation of the sample range turns out to be about 6 times the standard deviation for values of n from 200 to 1000". But am I missing something subtle in your derivation, or wouldn't it work just as well to justify dividing the range by any number?
Scortchi - Reinstate Monica

@Scortchi Well, the spirit of the approach is "if we expect almost all realizations to fall within 6 sigmas, then it is reasonable to expect that the extreme realizations will be near the border" -that's all there is to it, really. Perhaps I am too used to operate under extremely incomplete information, and obliged to say something quantitative about it... :)
Alecos Papadopoulos

4
I could reply that even more observations would fall within 10σ of the mean, giving a better estimate σ^=R10. I shan't because it's nonsense. Any number over 1.13 will be a rough estimate for some value of n.
Scortchi - Reinstate Monica

1

It is straightforward to get the distribution function of the maximum of the normal distribution (see "P.max.norm" in code). From it (with some calculus) you can get the quantile function (see "Q.max.norm").

Using "Q.max.norm" and "Q.min.norm" you can get the median of the range that is related with N. Using the idea presented by Alecos Papadopoulos (in previous answer) you can calculate sd.

Try this:

N = 100000    # the size of the sample

# Probability function given q and N
P.max.norm <- function(q, N=1, mean=0, sd=1){
    pnorm(q,mean,sd)^N
} 
# Quantile functions given p and N
Q.max.norm <- function(p, N=1, mean=0, sd=1){
    qnorm(p^(1/N),mean,sd)
} 
Q.min.norm <- function(p, N=1, mean=0, sd=1){
    mean-(Q.max.norm(p, N=N, mean=mean, sd=sd)-mean)
} 

### lets test it (takes some time)
Q.max.norm(0.5, N=N)  # The median on the maximum
Q.min.norm(0.5, N=N)  # The median on the minimum

iter = 100
median(replicate(iter, max(rnorm(N))))
median(replicate(iter, min(rnorm(N))))
# it is quite OK

### Lets try to get estimations
true_mean = -3
true_sd = 2
N = 100000

x = rnorm(N, true_mean, true_sd)  # simulation
x.vec = range(x)                  # observations

# estimation
est_mean = mean(x.vec)
est_sd = diff(x.vec)/(Q.max.norm(0.5, N=N)-Q.min.norm(0.5, N=N))

c(true_mean, true_sd)
c(est_mean, est_sd)

# Quite good, but only for large N
# -3  2
# -3.252606  1.981593

2
Continuing this approach, E(R)=σ1(1Φ(x))nΦ(x)ndx=σd2(n), where R is the range & Φ() the standard normal cumulative distribution function. You can find tabulated values of d2 for small n in the statistical process control literature, numerically evaluate the integral, or simulate for your n.
Scortchi - Reinstate Monica
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.