Oracle PL/SQL Tutorial/Linear Regression Functions/STATS F TEST

Материал из SQL эксперт
Перейти к: навигация, поиск

For degrees of freedom: STATS_F_TEST(expr1, expr2, "DF_NUM")

   <source lang="sql">

SQL> SQL> SQL> -- create demo table SQL> create table myTable(

 2    id           NUMBER(2),
 3    value        NUMBER(6,2)
 4  )
 5  /

Table created. SQL> SQL> -- prepare data SQL> insert into myTable(ID, value)values (1,9); 1 row created. SQL> insert into myTable(ID, value)values (2,2.11); 1 row created. SQL> insert into myTable(ID, value)values (3,3.44); 1 row created. SQL> insert into myTable(ID, value)values (4,-4.21); 1 row created. SQL> insert into myTable(ID, value)values (5,10); 1 row created. SQL> insert into myTable(ID, value)values (6,3); 1 row created. SQL> insert into myTable(ID, value)values (7,-5.88); 1 row created. SQL> insert into myTable(ID, value)values (8,123.45); 1 row created. SQL> insert into myTable(ID, value)values (9,98.23); 1 row created. SQL> insert into myTable(ID, value)values (10,938.23); 1 row created. SQL> insert into myTable(ID, value)values (11,984.23); 1 row created. SQL> insert into myTable(ID, value)values (12,198.23); 1 row created. SQL> insert into myTable(ID, value)values (13,928.87); 1 row created. SQL> insert into myTable(ID, value)values (14,25.37); 1 row created. SQL> insert into myTable(ID, value)values (15,918.3); 1 row created. SQL> insert into myTable(ID, value)values (16,9.23); 1 row created. SQL> insert into myTable(ID, value)values (17,8.23); 1 row created. SQL> SQL> select * from myTable

 2  /
       ID      VALUE

----------
        1          9
        2       2.11
        3       3.44
        4      -4.21
        5         10
        6          3
        7      -5.88
        8     123.45
        9      98.23
       10     938.23
       11     984.23
       ID      VALUE

----------
       12     198.23
       13     928.87
       14      25.37
       15      918.3
       16       9.23
       17       8.23

17 rows selected. SQL> SQL> SQL> SELECT STATS_F_TEST(1.2, value, "DF_NUM") FROM myTable; STATS_F_TEST(1.2,VALUE,"DF_NUM")


SQL> SQL> SQL> -- clean the table SQL> drop table myTable

 2  /

Table dropped.</source>


For significance level of one-sided test: STATS_F_TEST(expr1, expr2, "ONE_SIDED_SIG")

   <source lang="sql">

SQL> SQL> SQL> -- create demo table SQL> create table myTable(

 2    id           NUMBER(2),
 3    value        NUMBER(6,2)
 4  )
 5  /

Table created. SQL> SQL> -- prepare data SQL> insert into myTable(ID, value)values (1,9); 1 row created. SQL> insert into myTable(ID, value)values (2,2.11); 1 row created. SQL> insert into myTable(ID, value)values (3,3.44); 1 row created. SQL> insert into myTable(ID, value)values (4,-4.21); 1 row created. SQL> insert into myTable(ID, value)values (5,10); 1 row created. SQL> insert into myTable(ID, value)values (6,3); 1 row created. SQL> insert into myTable(ID, value)values (7,-5.88); 1 row created. SQL> insert into myTable(ID, value)values (8,123.45); 1 row created. SQL> insert into myTable(ID, value)values (9,98.23); 1 row created. SQL> insert into myTable(ID, value)values (10,938.23); 1 row created. SQL> insert into myTable(ID, value)values (11,984.23); 1 row created. SQL> insert into myTable(ID, value)values (12,198.23); 1 row created. SQL> insert into myTable(ID, value)values (13,928.87); 1 row created. SQL> insert into myTable(ID, value)values (14,25.37); 1 row created. SQL> insert into myTable(ID, value)values (15,918.3); 1 row created. SQL> insert into myTable(ID, value)values (16,9.23); 1 row created. SQL> insert into myTable(ID, value)values (17,8.23); 1 row created. SQL> SQL> select * from myTable

 2  /
       ID      VALUE

----------
        1          9
        2       2.11
        3       3.44
        4      -4.21
        5         10
        6          3
        7      -5.88
        8     123.45
        9      98.23
       10     938.23
       11     984.23
       ID      VALUE

----------
       12     198.23
       13     928.87
       14      25.37
       15      918.3
       16       9.23
       17       8.23

17 rows selected. SQL> SQL> SQL> SELECT STATS_F_TEST(1.2, value, "ONE_SIDED_SIG") FROM myTable; STATS_F_TEST(1.2,VALUE,"ONE_SIDED_SIG")


SQL> SQL> SQL> -- clean the table SQL> drop table myTable

 2  /

Table dropped.</source>


For significance level of two-sided test: STATS_F_TEST(expr1, expr2, "TWO_SIDED_SIG")

   <source lang="sql">

SQL> SQL> -- create demo table SQL> create table myTable(

 2    id           NUMBER(2),
 3    value        NUMBER(6,2)
 4  )
 5  /

Table created. SQL> SQL> -- prepare data SQL> insert into myTable(ID, value)values (1,9); 1 row created. SQL> insert into myTable(ID, value)values (2,2.11); 1 row created. SQL> insert into myTable(ID, value)values (3,3.44); 1 row created. SQL> insert into myTable(ID, value)values (4,-4.21); 1 row created. SQL> insert into myTable(ID, value)values (5,10); 1 row created. SQL> insert into myTable(ID, value)values (6,3); 1 row created. SQL> insert into myTable(ID, value)values (7,-5.88); 1 row created. SQL> insert into myTable(ID, value)values (8,123.45); 1 row created. SQL> insert into myTable(ID, value)values (9,98.23); 1 row created. SQL> insert into myTable(ID, value)values (10,938.23); 1 row created. SQL> insert into myTable(ID, value)values (11,984.23); 1 row created. SQL> insert into myTable(ID, value)values (12,198.23); 1 row created. SQL> insert into myTable(ID, value)values (13,928.87); 1 row created. SQL> insert into myTable(ID, value)values (14,25.37); 1 row created. SQL> insert into myTable(ID, value)values (15,918.3); 1 row created. SQL> insert into myTable(ID, value)values (16,9.23); 1 row created. SQL> insert into myTable(ID, value)values (17,8.23); 1 row created. SQL> SQL> select * from myTable

 2  /
       ID      VALUE

----------
        1          9
        2       2.11
        3       3.44
        4      -4.21
        5         10
        6          3
        7      -5.88
        8     123.45
        9      98.23
       10     938.23
       11     984.23
       ID      VALUE

----------
       12     198.23
       13     928.87
       14      25.37
       15      918.3
       16       9.23
       17       8.23

17 rows selected. SQL> SQL> SQL> SELECT STATS_F_TEST(1.2, value, "TWO_SIDED_SIG") FROM myTable; STATS_F_TEST(1.2,VALUE,"TWO_SIDED_SIG")


SQL> SQL> SQL> -- clean the table SQL> drop table myTable

 2  /

Table dropped.</source>


For the test statistic value: STATS_F_TEST(expr1, expr2, "STATISTIC")

This function tests the equality of two population variances.

The resulting f value is the ratio of one sample variance to the other sample variance.

Values very different from 1 usually indicate significant differences between the two variances.



   <source lang="sql">

SQL> -- create demo table SQL> create table myTable(

 2    id           NUMBER(2),
 3    value        NUMBER(6,2)
 4  )
 5  /

Table created. SQL> SQL> -- prepare data SQL> insert into myTable(ID, value)values (1,9); 1 row created. SQL> insert into myTable(ID, value)values (2,2.11); 1 row created. SQL> insert into myTable(ID, value)values (3,3.44); 1 row created. SQL> insert into myTable(ID, value)values (4,-4.21); 1 row created. SQL> insert into myTable(ID, value)values (5,10); 1 row created. SQL> insert into myTable(ID, value)values (6,3); 1 row created. SQL> insert into myTable(ID, value)values (7,-5.88); 1 row created. SQL> insert into myTable(ID, value)values (8,123.45); 1 row created. SQL> insert into myTable(ID, value)values (9,98.23); 1 row created. SQL> insert into myTable(ID, value)values (10,938.23); 1 row created. SQL> insert into myTable(ID, value)values (11,984.23); 1 row created. SQL> insert into myTable(ID, value)values (12,198.23); 1 row created. SQL> insert into myTable(ID, value)values (13,928.87); 1 row created. SQL> insert into myTable(ID, value)values (14,25.37); 1 row created. SQL> insert into myTable(ID, value)values (15,918.3); 1 row created. SQL> insert into myTable(ID, value)values (16,9.23); 1 row created. SQL> insert into myTable(ID, value)values (17,8.23); 1 row created. SQL> SQL> select * from myTable

 2  /
       ID      VALUE

----------
        1          9
        2       2.11
        3       3.44
        4      -4.21
        5         10
        6          3
        7      -5.88
        8     123.45
        9      98.23
       10     938.23
       11     984.23
       ID      VALUE

----------
       12     198.23
       13     928.87
       14      25.37
       15      918.3
       16       9.23
       17       8.23

17 rows selected. SQL> SQL> SQL> SELECT STATS_F_TEST(1.2, value, "STATISTIC") FROM myTable; STATS_F_TEST(1.2,VALUE,"STATISTIC")


SQL> SQL> SQL> -- clean the table SQL> drop table myTable

 2  /

Table dropped.</source>


STATS_F_TEST(expr1, expr2, "DF_DEN")

   <source lang="sql">

SQL> SQL> SQL> -- create demo table SQL> create table myTable(

 2    id           NUMBER(2),
 3    value        NUMBER(6,2)
 4  )
 5  /

Table created. SQL> SQL> -- prepare data SQL> insert into myTable(ID, value)values (1,9); 1 row created. SQL> insert into myTable(ID, value)values (2,2.11); 1 row created. SQL> insert into myTable(ID, value)values (3,3.44); 1 row created. SQL> insert into myTable(ID, value)values (4,-4.21); 1 row created. SQL> insert into myTable(ID, value)values (5,10); 1 row created. SQL> insert into myTable(ID, value)values (6,3); 1 row created. SQL> insert into myTable(ID, value)values (7,-5.88); 1 row created. SQL> insert into myTable(ID, value)values (8,123.45); 1 row created. SQL> insert into myTable(ID, value)values (9,98.23); 1 row created. SQL> insert into myTable(ID, value)values (10,938.23); 1 row created. SQL> insert into myTable(ID, value)values (11,984.23); 1 row created. SQL> insert into myTable(ID, value)values (12,198.23); 1 row created. SQL> insert into myTable(ID, value)values (13,928.87); 1 row created. SQL> insert into myTable(ID, value)values (14,25.37); 1 row created. SQL> insert into myTable(ID, value)values (15,918.3); 1 row created. SQL> insert into myTable(ID, value)values (16,9.23); 1 row created. SQL> insert into myTable(ID, value)values (17,8.23); 1 row created. SQL> SQL> select * from myTable

 2  /
       ID      VALUE

----------
        1          9
        2       2.11
        3       3.44
        4      -4.21
        5         10
        6          3
        7      -5.88
        8     123.45
        9      98.23
       10     938.23
       11     984.23
       ID      VALUE

----------
       12     198.23
       13     928.87
       14      25.37
       15      918.3
       16       9.23
       17       8.23

17 rows selected. SQL> SQL> SQL> SELECT STATS_F_TEST(1.2, value, "DF_DEN") FROM myTable; STATS_F_TEST(1.2,VALUE,"DF_DEN")


SQL> SQL> SQL> -- clean the table SQL> drop table myTable

 2  /

Table dropped.</source>