blob: 58d6e8e1625d58580f4dcfda463bec4bc198b748 [file] [log] [blame]
/* ----------------------------------------------------------------------- */
/**
@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', `');