문제

가우스 분포를 나타내는 값 유형이 있습니다.

struct Gauss {
    double mean;
    double variance;
}

일련의 값에 대한 필수 요소를 수행하고 싶습니다.

Gauss eulerIntegrate(double dt, Gauss iv, Gauss[] values) {
    Gauss r = iv;
    foreach (Gauss v in values) {
        r += v*dt;
    }
    return r;
}

내 질문은 이러한 정상 분포에 대한 추가를 구현하는 방법입니다.

스칼라에 의한 곱셈 (dt)는 충분히 단순 해 보였다. 하지만 간단하지 않았습니다! 감사 fooshnick 도움을 위해 :

public static Gauss operator * (Gauss g, double d) {
    return new Gauss(g.mean * d, g.variance * d * d);
}

그러나 추가는 나를 피합니다. 나는 단지 수단을 추가 할 수 있다고 생각합니다. 문제를 일으키는 것은 차이입니다. 이 정의 중 하나는 나에게 "논리적"인 것 같습니다.

public static Gauss operator + (Gauss a, Gauss b) {
    double mean = a.mean + b.mean;
    // Is it this? (Yes, it is!)
    return new Gauss(mean, a.variance + b.variance);        
    // Or this? (nope)
    //return new Gauss(mean, Math.Max(a.variance, b.variance));
    // Or how about this? (nope)
    //return new Gauss(mean, (a.variance + b.variance)/2);
}

누구나 통계적으로 올바른 또는 적어도 "합리적인"버전을 정의하는 데 도움이 될 수 있습니다. + 운영자?

대신 간격 산술을 사용할 수 있도록 코드를 전환 할 수 있다고 생각하지만 Prob와 Stats의 세계에 머물기를 바랐습니다.

도움이 되었습니까?

해결책

두 가지 정규 분포의 합은 그 자체로 정규 분포입니다.

n (평균 1, variance1) + n (평균 2, variance2) ~ n (평균 1 + 평균 2, variance1 + variance2)

이것은 모두 켜져 있습니다 Wikipedia 페이지.

이것들은 실제로 표준 편차가 아니라 실제로 차이라는 것을 조심하십시오.

// X + Y
public static Gauss operator + (Gauss a, Gauss b) {
    //NOTE: this is valid if X,Y are independent normal random variables
    return new Gauss(a.mean + b.mean, a.variance + b.variance);
}

// X*b
public static Gauss operator * (Gauss a, double b) {
    return new Gauss(a.mean*b, a.variance*b*b);
}

다른 팁

더 정확하게 :

랜덤 변수 z가 2 개의 상관되지 않은 가우시안 랜덤 변수 x와 y의 선형 조합으로 정의되면 z 자체는 가우스 랜덤 변수입니다.

z = ax + by 인 경우 평균 (z) = a * 평균 (x) + b * 평균 (y) 및 분산 (z) = a2 * 분산 (x) + b2 * 분산 (y).

임의 변수가있는 경우 상관 관계, 당신은 그것을 설명해야합니다. 분산 (x)은 예상 값 e ([x-mean (x)]에 의해 정의됩니다.2). z = ax +를 위해 이것을 통해 다음을 통해 다음과 같습니다.

분산 (z) = a2 * 분산 (x) + b2 * 분산 (y) + 2AB * 공분산 (X, Y)

가우시안 분포가없는 두 개의 상관없는 랜덤 변수를 합산하는 경우 합계의 분포는 다음과 같습니다. 회선 두 구성 요소 분포 중.

두 개의 상관 관계가 아닌 비 가우시안 랜덤 변수를 합산하는 경우 적절한 적분을 직접 수행해야합니다.

글쎄, 스칼라에 의한 곱셈에 잘못된 것입니다 - 당신은 d의 제곱으로 분산을 곱해야합니다. 상수를 추가하는 경우 평균에 추가하면 분산이 동일하게 유지됩니다. 두 가지 분포를 추가하는 경우 평균을 추가하고 차이를 추가하십시오.

누구든지 + 연산자의 통계적으로 올바른 또는 적어도 "합리적인"버전을 정의하는 데 도움을 줄 수 있습니까?

두 가지 분포를 추가하면 다른 것들을 의미하기 때문에 각 부품의 MTBF가 정상적으로 분배되고 시스템이 중복성이없는 경우 제목에서 첫 번째 반응은 신뢰성과 유지 관리에 따라 시스템의 MTBF 분포입니다. 당신은 두 개의 정규 분포 효과의 (논리적) 합이 아니라 정규 분포 독립적 인 두 가지의 합의 분포에 대해 이야기하고 있습니다. 종종 운영자 과부하에는 놀라운 의미가 있습니다. 코드에 매우 구체적인 대상 고객이 없다면 그것을 함수로 남겨두고 'NormalsumDistribution'이라고 부릅니다.

하, 나는 당신이 가우스 분포를 함께 추가 할 수 없다고 생각했지만 할 수 있습니다!

http://mathworld.wolfram.com/normalsumdistribution.html

실제로, 평균은 개별 분포의 합이고 분산은 개별 분포의 합입니다.

나는 당신이 일련의 값을 통해 "통합"이라고 부르는 것을 좋아하는지 확실하지 않습니다. 미적분학적 의미에서 그 단어를 의미합니까? 수치 통합을 시도하고 있습니까? 그렇게하는 더 좋은 방법이 있습니다. 당신은 최적의 일은 물론 나에게 옳지 않습니다.

가우스 분포는 멋지고 부드러운 기능입니다. 나는 멋진 직교 접근법이나 런지 쿠타가 훨씬 더 나은 아이디어라고 생각합니다.

나는 그것이 당신이 어떤 유형의 추가를하고 있는지에 달려 있다고 생각했을 것입니다. 속성 (평균, 표준 편차 등)을 사용하여 정규 분포를 두 개의 분포의 합과 동일하게하려면 다른 답변에 주어진 속성을 추가하는 것은 정상입니다. 이것은 많은 수의 정상 확률 분포가 추가되면 결과 확률 분포가 또 다른 정상 확률 분포 인 경우 PERT와 같은 가정입니다.

추가 된 두 분포가 비슷하지 않을 때 문제가 발생합니다. 예를 들어 평균 2 및 표준 편차 1의 확률 분포와 표준 편차가 2의 확률 분포를 추가하십시오.이 두 분포를 추가하면 2 개의 피크가있는 2 개의 피크로 확률 분포가 1 개가됩니다. 그리고 하나는 10시에. 따라서 결과는 정상적인 분류가 아닙니다. 분포를 추가하는 것에 대한 가정은 원래 분포가 매우 유사하거나 원래 배포판이 많아서 피크와 트로프를 균일하게 할 수있는 경우에만 유효합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top