2

Oracle で Excel ワークブックの機能を複製しようとしています。ワークシートの数式の 1 つは、「カイ 2 乗分布の片側確率を返す」CHIDIST を使用します。オラクルのどこにも同様の機能はありません!独自の CHIDIST 関数を作成する必要がありますか?

CHIDIST に関する Excel のドキュメントへのリンクは次のとおりです: http://office.microsoft.com/en-gb/excel-help/chidist-HP005209010.aspx

私はすでにカイ二乗と自由度を計算しました。

ありがとう

4

2 に答える 2

0

右裾の確率...いいね...

Oracle では、ストアド プロシージャと関数に Java コードを埋め込むことができます。最善の方法は、適切な Java クラスを使用して、Oracle の関数から呼び出すことです。それほど難しいことではありません:

http://docs.oracle.com/cd/B19306_01/java.102/b14187/chfive.htm http://jwork.org/scavis/api/doc.php/umontreal/iro/lecuyer/probdist/ChiDist.html

それが私があなたのためにできるすべてです:

DECLARE
    l_value_to_evaluate NUMBER (10, 3) := 18.307;  /* X; Value at which you want to evaluate the distribution */
    l_degrees_freedom   NUMBER := 10;              /* Degrees of freedom */
    l_number NUMBER;

    FUNCTION is_number(str_in IN VARCHAR2) RETURN NUMBER
    IS
        n NUMBER;
    BEGIN
        n := TO_NUMBER(str_in);

        RETURN 1;
    EXCEPTION
        WHEN VALUE_ERROR THEN
            RETURN 0;
    END;
BEGIN
    -- If either argument is nonnumeric, CHIDIST returns the #VALUE! error value.
    l_number := is_number(l_value_to_evaluate);
    l_number := is_number(l_degrees_freedom);

    -- If x is negative, CHIDIST returns the #NUM! error value.
    IF SIGN(l_value_to_evaluate) = -1 THEN
        RAISE_APPLICATION_ERROR(-20998, '#NUM!');
    END IF;

    -- If degrees_freedom is not an integer, it is truncated.
    l_degrees_freedom := TRUNC(l_degrees_freedom);

    -- If degrees_freedom < 1 or degrees_freedom > 10^10, CHIDIST returns the #NUM! error value.
    IF l_degrees_freedom < 1
    OR l_degrees_freedom > POWER(10, 10) THEN
        RAISE_APPLICATION_ERROR(-20997, '#NUM!');
    END IF;

    -- CHIDIST is calculated as CHIDIST = P(X>x), where X is a χ2 random variable.
    /* Here the integral's implementation */
EXCEPTION
    WHEN VALUE_ERROR THEN
        RAISE_APPLICATION_ERROR(-20999, '#VALUE!');
END;
于 2013-06-11T16:15:57.270 に答える
0

CHIDIST を使用してカイ 2 乗検定を実行している場合、STATS_CROSSTAB関数は同じ目的に対して別の手段である可能性があります。ペアになった観測値の 2 つのセットのカイ 2 乗値、有意性、または自由度を計算します。

于 2013-06-11T16:50:47.100 に答える