2 m4_include(`SQLCommon.m4
')
177 ------------------------------------------------------------------------
191 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_linregr (
199 PythonFunction(regress, clustered_variance, clustered_variance_linregr)
200 $$ LANGUAGE plpythonu;
202 ------------------------------------------------------------------------
204 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_linregr (
212 PERFORM MADLIB_SCHEMA.clustered_variance_linregr(tbl_data, tbl_output, depvar, indvar, clustervar, NULL);
216 ------------------------------------------------------------------------
218 -- print quick help messages
219 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_linregr (
221 PythonFunction(regress, clustered_variance, clustered_variance_linregr_help)
222 $$ LANGUAGE plpythonu;
224 ------------------------------------------------------------------------
226 -- print quick help messages
227 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_linregr (
230 PythonFunction(regress, clustered_variance, clustered_variance_linregr_help)
231 $$ LANGUAGE plpythonu;
233 ------------------------------------------------------------------------
234 -- Aggregate function --
236 CREATE TYPE MADLIB_SCHEMA.__clustered_agg_result AS (
237 meatvec DOUBLE PRECISION[],
238 breadvec DOUBLE PRECISION[]
241 ------------------------
243 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__clustered_err_lin_transition (
244 state MADLIB_SCHEMA.bytea8,
246 x DOUBLE PRECISION[],
247 coef DOUBLE PRECISION[]
248 ) RETURNS MADLIB_SCHEMA.bytea8 AS
250 LANGUAGE C IMMUTABLE STRICT;
252 ------------------------
254 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__clustered_err_lin_merge (
255 state1 MADLIB_SCHEMA.bytea8,
256 state2 MADLIB_SCHEMA.bytea8
257 ) RETURNS MADLIB_SCHEMA.bytea8 AS
259 LANGUAGE C IMMUTABLE STRICT;
261 ------------------------
263 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__clustered_err_lin_final (
264 state MADLIB_SCHEMA.bytea8
265 ) RETURNS MADLIB_SCHEMA.__clustered_agg_result AS
267 LANGUAGE C IMMUTABLE STRICT;
269 ------------------------
271 CREATE AGGREGATE MADLIB_SCHEMA.__clustered_err_lin_step (
272 /* depvar */ DOUBLE PRECISION,
273 /* indvar */ DOUBLE PRECISION[],
274 /* coef */ DOUBLE PRECISION[]) (
275 m4_ifdef(`__GREENPLUM__', `prefunc=MADLIB_SCHEMA.__clustered_err_lin_merge,
')
276 SFUNC = MADLIB_SCHEMA.__clustered_err_lin_transition,
277 STYPE = MADLIB_SCHEMA.bytea8,
278 FINALFUNC = MADLIB_SCHEMA.__clustered_err_lin_final,
282 ------------------------------------------------------------------------
284 CREATE TYPE MADLIB_SCHEMA.__clustered_lin_result AS (
285 coef DOUBLE PRECISION[],
286 std_err DOUBLE PRECISION[],
287 t_stats DOUBLE PRECISION[],
288 p_values DOUBLE PRECISION[]
291 -- Compute the t-stats and p-values
292 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__clustered_lin_compute_stats (
293 coef DOUBLE PRECISION[],
294 meatvec DOUBLE PRECISION[],
295 breadvec DOUBLE PRECISION[],
298 ) RETURNS MADLIB_SCHEMA.__clustered_lin_result AS
299 'MODULE_PATHNAME
', 'clustered_lin_compute_stats
'
300 LANGUAGE C IMMUTABLE STRICT;
302 ------------------------------------------------------------------------
303 ------------------------------------------------------------------------
305 -- Supporting PostgreSQL sum over array
306 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__array_add (
307 x DOUBLE PRECISION[],
309 ) RETURNS DOUBLE PRECISION[] AS $$
314 res double precision[];
318 a := array_lower (y, 1);
319 b := array_upper (y, 1);
321 IF a IS NOT NULL THEN
323 res[i] := coalesce(res[i],0) + y[i];
329 $$ LANGUAGE plpgsql STRICT IMMUTABLE;
331 CREATE AGGREGATE MADLIB_SCHEMA.__array_sum (
332 /* x */ DOUBLE PRECISION[]
334 SFunc = MADLIB_SCHEMA.__array_add,
335 SType = DOUBLE PRECISION[],
336 m4_ifdef(`__GREENPLUM__', `prefunc = MADLIB_SCHEMA.__array_add,
')
340 ------------------------------------------------------------------------
341 ------------------------------------------------------------------------
342 -- Logistic clustered standard errors
343 ------------------------------------------------------------------------
344 ------------------------------------------------------------------------
346 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_logregr (
355 tolerance DOUBLE PRECISION,
358 PythonFunction(regress, clustered_variance, clustered_variance_logregr)
359 $$ LANGUAGE plpythonu;
361 ------------------------------------------------------------------------
363 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_logregr (
371 PERFORM MADLIB_SCHEMA.clustered_variance_logregr(tbl_data, tbl_output, depvar, indvar, clustervar,
372 NULL, 20, 'irls
', 0.0001, False);
376 ------------------------------------------------------------------------
378 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_logregr (
387 PERFORM MADLIB_SCHEMA.clustered_variance_logregr(tbl_data, tbl_output, depvar, indvar, clustervar,
388 grouping_col, 20, 'irls
', 0.0001, False);
392 ------------------------------------------------------------------------
394 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_logregr (
404 PERFORM MADLIB_SCHEMA.clustered_variance_logregr(tbl_data, tbl_output, depvar, indvar, clustervar,
405 grouping_col, max_iter, 'irls
', 0.0001, False);
409 ------------------------------------------------------------------------
411 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_logregr (
422 PERFORM MADLIB_SCHEMA.clustered_variance_logregr(tbl_data, tbl_output, depvar, indvar, clustervar,
423 grouping_col, max_iter, optimizer, 0.0001, False);
427 ------------------------------------------------------------------------
429 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_logregr (
438 tolerance DOUBLE PRECISION
441 PERFORM MADLIB_SCHEMA.clustered_variance_logregr(tbl_data, tbl_output, depvar, indvar, clustervar,
442 grouping_col, max_iter, optimizer, tolerance, False);
446 ------------------------------------------------------------------------
448 -- print quick help messages
449 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_logregr (
451 PythonFunction(regress, clustered_variance, clustered_variance_logregr_help)
452 $$ LANGUAGE plpythonu;
454 ------------------------------------------------------------------------
456 -- print quick help messages
457 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_logregr (
460 PythonFunction(regress, clustered_variance, clustered_variance_logregr_help)
461 $$ LANGUAGE plpythonu;
463 ------------------------------------------------------------------------
464 -- Aggregate function --
466 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__clustered_err_log_transition (
467 state MADLIB_SCHEMA.bytea8,
469 x DOUBLE PRECISION[],
470 coef DOUBLE PRECISION[]
471 ) RETURNS MADLIB_SCHEMA.bytea8 AS
473 LANGUAGE C IMMUTABLE STRICT;
475 ------------------------
477 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__clustered_err_log_merge (
478 state1 MADLIB_SCHEMA.bytea8,
479 state2 MADLIB_SCHEMA.bytea8
480 ) RETURNS MADLIB_SCHEMA.bytea8 AS
482 LANGUAGE C IMMUTABLE STRICT;
484 ------------------------
486 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__clustered_err_log_final (
487 state MADLIB_SCHEMA.bytea8
488 ) RETURNS MADLIB_SCHEMA.__clustered_agg_result AS
490 LANGUAGE C IMMUTABLE STRICT;
492 ------------------------
494 CREATE AGGREGATE MADLIB_SCHEMA.__clustered_err_log_step (
495 /* depvar */ BOOLEAN,
496 /* indvar */ DOUBLE PRECISION[],
497 /* coef */ DOUBLE PRECISION[]) (
498 m4_ifdef(`__GREENPLUM__', `prefunc=MADLIB_SCHEMA.__clustered_err_log_merge,
')
499 SFUNC = MADLIB_SCHEMA.__clustered_err_log_transition,
500 STYPE = MADLIB_SCHEMA.bytea8,
501 FINALFUNC = MADLIB_SCHEMA.__clustered_err_log_final,
505 ------------------------------------------------------------------------
507 CREATE TYPE MADLIB_SCHEMA.__clustered_log_result AS (
508 coef DOUBLE PRECISION[],
509 std_err DOUBLE PRECISION[],
510 z_stats DOUBLE PRECISION[],
511 p_values DOUBLE PRECISION[]
514 -- Compute the t-stats and p-values
515 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__clustered_log_compute_stats (
516 coef DOUBLE PRECISION[],
517 meatvec DOUBLE PRECISION[],
518 breadvec DOUBLE PRECISION[],
521 ) RETURNS MADLIB_SCHEMA.__clustered_log_result AS
522 'MODULE_PATHNAME
', 'clustered_log_compute_stats
'
523 LANGUAGE C IMMUTABLE STRICT;
526 ------------------------------------------------------------------------
527 ------------------------------------------------------------------------
528 -- Multi-Logistic clustered standard errors
529 ------------------------------------------------------------------------
530 ------------------------------------------------------------------------
532 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_mlogregr (
538 ref_category INTEGER,
542 tolerance DOUBLE PRECISION,
545 PythonFunction(regress, clustered_variance, clustered_variance_mlogregr)
546 $$ LANGUAGE plpythonu;
548 ------------------------------------------------------------------------
550 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_mlogregr (
558 PERFORM MADLIB_SCHEMA.clustered_variance_mlogregr(tbl_data, tbl_output, depvar, indvar, clustervar, 0,
559 NULL, 20, 'irls
', 0.0001, False);
563 ------------------------------------------------------------------------
565 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_mlogregr (
574 PERFORM MADLIB_SCHEMA.clustered_variance_mlogregr(tbl_data, tbl_output, depvar, indvar, clustervar, ref_category,
575 NULL, 20, 'irls
', 0.0001, False);
579 ------------------------------------------------------------------------
581 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_mlogregr (
587 ref_category INTEGER,
591 PERFORM MADLIB_SCHEMA.clustered_variance_mlogregr(tbl_data, tbl_output, depvar, indvar, clustervar, ref_category,
592 grouping_col, 20, 'irls
', 0.0001, False);
596 ------------------------------------------------------------------------
598 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_mlogregr (
604 ref_category INTEGER,
609 PERFORM MADLIB_SCHEMA.clustered_variance_mlogregr(tbl_data, tbl_output, depvar, indvar, clustervar, ref_category,
610 grouping_col, max_iter, 'irls
', 0.0001, False);
614 ------------------------------------------------------------------------
616 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_mlogregr (
622 ref_category INTEGER,
628 PERFORM MADLIB_SCHEMA.clustered_variance_mlogregr(tbl_data, tbl_output, depvar, indvar, clustervar, ref_category,
629 grouping_col, max_iter, optimizer, 0.0001, False);
633 ------------------------------------------------------------------------
635 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_mlogregr (
641 ref_category INTEGER,
645 tolerance DOUBLE PRECISION
648 PERFORM MADLIB_SCHEMA.clustered_variance_mlogregr(tbl_data, tbl_output, depvar, indvar, clustervar, ref_category,
649 grouping_col, max_iter, optimizer, tolerance, False);
653 ------------------------------------------------------------------------
655 -- print quick help messages
656 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_mlogregr (
658 PythonFunction(regress, clustered_variance, clustered_variance_mlogregr_help)
659 $$ LANGUAGE plpythonu;
661 ------------------------------------------------------------------------
663 -- print quick help messages
664 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.clustered_variance_mlogregr (
667 PythonFunction(regress, clustered_variance, clustered_variance_mlogregr_help)
668 $$ LANGUAGE plpythonu;
670 ------------------------------------------------------------------------
671 -- Aggregate function --
673 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__clustered_err_mlog_transition (
674 state MADLIB_SCHEMA.bytea8,
676 x DOUBLE PRECISION[],
677 coef DOUBLE PRECISION[],
680 ) RETURNS MADLIB_SCHEMA.bytea8 AS
682 LANGUAGE C IMMUTABLE STRICT;
684 ------------------------
686 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__clustered_err_mlog_merge (
687 state1 MADLIB_SCHEMA.bytea8,
688 state2 MADLIB_SCHEMA.bytea8
689 ) RETURNS MADLIB_SCHEMA.bytea8 AS
691 LANGUAGE C IMMUTABLE STRICT;
693 ------------------------
695 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__clustered_err_mlog_final (
696 state MADLIB_SCHEMA.bytea8
697 ) RETURNS MADLIB_SCHEMA.__clustered_agg_result AS
699 LANGUAGE C IMMUTABLE STRICT;
701 ------------------------
703 CREATE AGGREGATE MADLIB_SCHEMA.__clustered_err_mlog_step (
704 /* depvar */ INTEGER,
705 /* indvar */ DOUBLE PRECISION[],
706 /* coef */ DOUBLE PRECISION[],
707 /* num_cat */ INTEGER,
708 /* reference_cat */ INTEGER) (
709 m4_ifdef(`__GREENPLUM__', `prefunc=MADLIB_SCHEMA.__clustered_err_mlog_merge,
')
710 SFUNC = MADLIB_SCHEMA.__clustered_err_mlog_transition,
711 STYPE = MADLIB_SCHEMA.bytea8,
712 FINALFUNC = MADLIB_SCHEMA.__clustered_err_mlog_final,
716 ------------------------------------------------------------------------
718 CREATE TYPE MADLIB_SCHEMA.__clustered_mlog_result AS (
719 coef DOUBLE PRECISION[],
720 std_err DOUBLE PRECISION[],
721 z_stats DOUBLE PRECISION[],
722 p_values DOUBLE PRECISION[]
725 -- Compute the t-stats and p-values
726 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__clustered_mlog_compute_stats (
727 coef DOUBLE PRECISION[],
728 meatvec DOUBLE PRECISION[],
729 breadvec DOUBLE PRECISION[],
732 ) RETURNS MADLIB_SCHEMA.__clustered_mlog_result AS
733 'MODULE_PATHNAME
', 'clustered_mlog_compute_stats
'
734 LANGUAGE C IMMUTABLE STRICT;