/* ----------------------------------------------------------------------- */ /** @addtogroup grp_clustered_errors * @file clustered_variance_coxph.sql_in * * @brief SQL functions for clustered robust cox proportional hazards regression * @date Oct 2013 * * @sa For a brief introduction to clustered robust cox regression, see the * module description \ref grp_clustered_errors * *//* ----------------------------------------------------------------------- */ m4_include(`SQLCommon.m4') ---------------------------------------------------------------------- CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_coxph() RETURNS VARCHAR AS $$ BEGIN RETURN MADLIB_SCHEMA.clustered_variance_coxph(''); END; $$ LANGUAGE plpgsql IMMUTABLE m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `CONTAINS SQL', `'); ---------------------------------------------------------------------- CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_coxph( message VARCHAR ) RETURNS VARCHAR AS $$ PythonFunction(stats, clustered_variance_coxph, cl_coxph_help_message) $$ LANGUAGE plpythonu IMMUTABLE m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `CONTAINS SQL', `'); ---------------------------------------------------------------------- CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_coxph( model_table TEXT, output_table TEXT, clustervar TEXT ) RETURNS VOID AS $$ PythonFunction(stats, clustered_variance_coxph, clustered_coxph) $$ LANGUAGE plpythonu VOLATILE m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `MODIFIES SQL DATA', `'); ---------------------------------------------------------------------- CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.coxph_a_b_transition( /* state */ DOUBLE PRECISION[], /* size */ INTEGER, /* status */ BOOLEAN, /* H values */ DOUBLE PRECISION[], /* S */ 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.coxph_a_b_merge( /* left state */ DOUBLE PRECISION[], /* right state */ DOUBLE PRECISION[] ) RETURNS DOUBLE PRECISION[] AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `'); -------------------------------- DROP TYPE IF EXISTS MADLIB_SCHEMA.__coxph_a_b_result CASCADE; CREATE TYPE MADLIB_SCHEMA.__coxph_a_b_result AS( a DOUBLE PRECISION, b DOUBLE PRECISION[] ); -------------------------------- CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.coxph_a_b_final( /* right state */ DOUBLE PRECISION[] ) RETURNS MADLIB_SCHEMA.__coxph_a_b_result AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `'); -------------------------------- DROP AGGREGATE IF EXISTS MADLIB_SCHEMA.coxph_a_b( /* size */ INTEGER, /* status */ BOOLEAN, /* H values */ DOUBLE PRECISION[], /* S */ DOUBLE PRECISION ); CREATE AGGREGATE MADLIB_SCHEMA.coxph_a_b( /* size */ INTEGER, /* status */ BOOLEAN, /* H values */ DOUBLE PRECISION[], /* S */ DOUBLE PRECISION ) ( stype = DOUBLE PRECISION[], sfunc = MADLIB_SCHEMA.coxph_a_b_transition, m4_ifdef(`__POSTGRESQL__', `', `PREFUNC = MADLIB_SCHEMA.coxph_a_b_merge,') finalfunc = MADLIB_SCHEMA.coxph_a_b_final, initcond = '{0,0,0,0}' ); ---------------------------------------------------------------------- CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.coxph_compute_w( x DOUBLE PRECISION[], status BOOLEAN, coef DOUBLE PRECISION[], H DOUBLE PRECISION[], S DOUBLE PRECISION, A DOUBLE PRECISION, B DOUBLE PRECISION[] ) RETURNS DOUBLE PRECISION[] AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `'); ---------------------------------------------------------------------- DROP TYPE IF EXISTS MADLIB_SCHEMA.__coxph_cl_var_result CASCADE; CREATE TYPE MADLIB_SCHEMA.__coxph_cl_var_result AS( std_err DOUBLE PRECISION[], z_stats DOUBLE PRECISION[], p_values DOUBLE PRECISION[] ); -------------------------------- CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.coxph_compute_clustered_stats( coef DOUBLE PRECISION[], hessian DOUBLE PRECISION[], A DOUBLE PRECISION[] ) RETURNS MADLIB_SCHEMA.__coxph_cl_var_result AS 'MODULE_PATHNAME' LANGUAGE C IMMUTABLE STRICT m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `NO SQL', `'); ---------------------------------------------------------------------- CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.robust_variance_coxph( model_table VARCHAR, output_table VARCHAR, clustervar VARCHAR ) RETURNS VOID AS $$ PythonFunction(stats, clustered_variance_coxph, clustered_coxph) $$ LANGUAGE plpythonu VOLATILE m4_ifdef(`__HAS_FUNCTION_PROPERTIES__', `MODIFIES SQL DATA', `');