| /* ----------------------------------------------------------------------- *//** |
| * |
| * @file robust_variance_coxph.sql_in |
| * |
| * @brief SQL functions for robust cox proportional hazards regression |
| * @date Oct 2013 |
| * |
| * @sa For a brief introduction to robust cox regression, see the |
| * module description \ref grp_robust_cox_prop_hazards |
| * |
| *//* ----------------------------------------------------------------------- */ |
| |
| m4_include(`SQLCommon.m4') |
| |
| ---------------------------------------------------------------------- |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.robust_variance_coxph() |
| RETURNS VARCHAR AS $$ |
| BEGIN |
| RETURN MADLIB_SCHEMA.robust_variance_coxph(''); |
| END; |
| $$ LANGUAGE plpgsql IMMUTABLE |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `CONTAINS SQL', `'); |
| |
| ---------------------------------------------------------------------- |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.robust_variance_coxph( |
| message VARCHAR |
| ) RETURNS VARCHAR AS $$ |
| PythonFunction(stats, robust_variance_coxph, rb_help_message) |
| $$ LANGUAGE plpythonu IMMUTABLE |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `CONTAINS SQL', `'); |
| |
| ---------------------------------------------------------------------- |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.robust_variance_coxph( |
| model_table VARCHAR, -- name of model table |
| output_table VARCHAR -- name of output table |
| ) RETURNS VOID AS $$ |
| PythonFunction(stats, robust_variance_coxph, rb_coxph) |
| $$ LANGUAGE plpythonu |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `MODIFIES SQL DATA', `'); |
| |
| ---------------------------------------------------------------------- |
| |
| DROP TYPE IF EXISTS MADLIB_SCHEMA.__rb_coxph_result CASCADE; |
| CREATE TYPE MADLIB_SCHEMA.__rb_coxph_result AS ( |
| std_err DOUBLE PRECISION[], |
| stats DOUBLE PRECISION[], |
| p_values DOUBLE PRECISION[] |
| ); |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.rb_coxph_step_transition( |
| /* state */ DOUBLE PRECISION[], |
| /* x */ DOUBLE PRECISION[], |
| /* y */ DOUBLE PRECISION, |
| /* status */ BOOLEAN, |
| /* coef */ DOUBLE PRECISION[], |
| /* Hessian */ DOUBLE PRECISION[], |
| /* H values */ DOUBLE PRECISION[], |
| /* S */ DOUBLE PRECISION |
| ) RETURNS DOUBLE PRECISION[] AS 'MODULE_PATHNAME' |
| LANGUAGE C IMMUTABLE |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `'); |
| |
| |
| -------------------------------- |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.rb_coxph_step_final( |
| /* state */ DOUBLE PRECISION[] |
| ) RETURNS MADLIB_SCHEMA.__rb_coxph_result AS 'MODULE_PATHNAME' |
| LANGUAGE C IMMUTABLE STRICT |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `'); |
| |
| -------------------------------- |
| |
| CREATE |
| m4_ifdef(`__POSTGRESQL__', `', m4_ifdef(`__HAS_ORDERED_AGGREGATES__', `ORDERED')) |
| AGGREGATE MADLIB_SCHEMA.rb_coxph_step( |
| /* x */ DOUBLE PRECISION[], |
| /* y */ DOUBLE PRECISION, |
| /* status */ BOOLEAN, |
| /* coef */ DOUBLE PRECISION[], |
| /* Hessian */ DOUBLE PRECISION[], |
| /* H values */ DOUBLE PRECISION[], |
| /* S */ DOUBLE PRECISION |
| ) ( |
| SType = DOUBLE PRECISION[], |
| SFunc = MADLIB_SCHEMA.rb_coxph_step_transition, |
| FinalFunc = MADLIB_SCHEMA.rb_coxph_step_final, |
| InitCond = '{0,0,0,0,0,0,0,0}' |
| ); |
| |
| ---------------------------------------------------------------------- |
| |
| DROP TYPE IF EXISTS MADLIB_SCHEMA.__rb_coxph_hs_result CASCADE; |
| CREATE TYPE MADLIB_SCHEMA.__rb_coxph_hs_result AS ( |
| H DOUBLE PRECISION[], |
| S DOUBLE PRECISION |
| ); |
| |
| -------------------------------- |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.coxph_h_s_transition( |
| /* state */ DOUBLE PRECISION[], |
| /* x */ DOUBLE PRECISION[], |
| /* coef */ DOUBLE PRECISION[] |
| ) RETURNS DOUBLE PRECISION[] AS 'MODULE_PATHNAME' |
| LANGUAGE C IMMUTABLE |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `'); |
| |
| -------------------------------- |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.coxph_h_s_merge( |
| /*+ left_state */ DOUBLE PRECISION[], |
| /*+ right_state */ DOUBLE PRECISION[]) |
| RETURNS DOUBLE PRECISION[] AS 'MODULE_PATHNAME' |
| LANGUAGE C IMMUTABLE |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `'); |
| |
| -------------------------------- |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.coxph_h_s_final( |
| /* state */ DOUBLE PRECISION[] |
| ) RETURNS MADLIB_SCHEMA.__rb_coxph_hs_result AS 'MODULE_PATHNAME' |
| LANGUAGE C IMMUTABLE STRICT |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `'); |
| |
| -------------------------------- |
| |
| DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.coxph_h_s( |
| /* x */ DOUBLE PRECISION[], |
| /* coef */ DOUBLE PRECISION[] |
| ); |
| CREATE AGGREGATE MADLIB_SCHEMA.coxph_h_s( |
| /* x */ DOUBLE PRECISION[], |
| /* coef */ DOUBLE PRECISION[] |
| ) ( |
| SType = DOUBLE PRECISION[], |
| SFunc = MADLIB_SCHEMA.coxph_h_s_transition, |
| FinalFunc = MADLIB_SCHEMA.coxph_h_s_final, |
| m4_ifdef(`__POSTGRESQL__', `', `PREFUNC = MADLIB_SCHEMA.coxph_h_s_merge,') |
| InitCond = '{0,0,0,0,0,0,0,0}' |
| ); |
| |
| ---------------------------------------------------------------------- |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.rb_coxph_strata_step_final( |
| /* state */ DOUBLE PRECISION[] |
| ) RETURNS DOUBLE PRECISION[] AS 'MODULE_PATHNAME' |
| LANGUAGE C IMMUTABLE STRICT |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `'); |
| |
| -------------------------------- |
| |
| DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.rb_coxph_strata_step( |
| /* x */ DOUBLE PRECISION[], |
| /* y */ DOUBLE PRECISION, |
| /* status */ BOOLEAN, |
| /* coef */ DOUBLE PRECISION[], |
| /* Hessian */ DOUBLE PRECISION[], |
| /* H values */ DOUBLE PRECISION[], |
| /* S */ DOUBLE PRECISION |
| ); |
| CREATE |
| m4_ifdef(`__POSTGRESQL__', `', m4_ifdef(`__HAS_ORDERED_AGGREGATES__', `ORDERED')) |
| AGGREGATE MADLIB_SCHEMA.rb_coxph_strata_step( |
| /* x */ DOUBLE PRECISION[], |
| /* y */ DOUBLE PRECISION, |
| /* status */ BOOLEAN, |
| /* coef */ DOUBLE PRECISION[], |
| /* Hessian */ DOUBLE PRECISION[], |
| /* H values */ DOUBLE PRECISION[], |
| /* S */ DOUBLE PRECISION |
| ) ( |
| SType = DOUBLE PRECISION[], |
| SFunc = MADLIB_SCHEMA.rb_coxph_step_transition, |
| FinalFunc = MADLIB_SCHEMA.rb_coxph_strata_step_final, |
| InitCond = '{0,0,0,0,0,0,0,0}' |
| ); |
| |
| ---------------------------------------------------------------------- |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.rb_sum_strata_transition( |
| in_state1 DOUBLE PRECISION[], |
| in_state2 DOUBLE PRECISION[] |
| ) RETURNS DOUBLE PRECISION[] AS 'MODULE_PATHNAME' |
| LANGUAGE C IMMUTABLE STRICT |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `'); |
| |
| -------------------------------- |
| |
| CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.rb_sum_strata_final( |
| in_state DOUBLE PRECISION[] |
| ) RETURNS MADLIB_SCHEMA.__rb_coxph_result AS 'MODULE_PATHNAME' |
| LANGUAGE C IMMUTABLE STRICT |
| m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `'); |
| |
| -------------------------------- |
| |
| DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.rb_sum_strata( |
| /* in_state */ DOUBLE PRECISION[] |
| ); |
| CREATE AGGREGATE MADLIB_SCHEMA.rb_sum_strata( |
| /* in_state */ DOUBLE PRECISION[] |
| ) ( |
| SType = DOUBLE PRECISION[], |
| SFunc = MADLIB_SCHEMA.rb_sum_strata_transition, |
| FinalFunc = MADLIB_SCHEMA.rb_sum_strata_final |
| m4_ifdef(`__POSTGRESQL__', `', `,PreFunc=MADLIB_SCHEMA.rb_sum_strata_transition') |
| ); |