[SPARK-11587][SPARKR] Fix the summary generic to match base R

The signature is summary(object, ...) as defined in
https://stat.ethz.ch/R-manual/R-devel/library/base/html/summary.html

Author: Shivaram Venkataraman <shivaram@cs.berkeley.edu>

Closes #9582 from shivaram/summary-fix.
This commit is contained in:
Shivaram Venkataraman 2015-11-09 21:06:01 -08:00
parent 1431319e5b
commit c4e19b3819
4 changed files with 16 additions and 10 deletions

View file

@ -1944,9 +1944,9 @@ setMethod("describe",
#' @rdname summary
#' @name summary
setMethod("summary",
signature(x = "DataFrame"),
function(x) {
describe(x)
signature(object = "DataFrame"),
function(object, ...) {
describe(object)
})

View file

@ -561,7 +561,7 @@ setGeneric("summarize", function(x,...) { standardGeneric("summarize") })
#' @rdname summary
#' @export
setGeneric("summary", function(x, ...) { standardGeneric("summary") })
setGeneric("summary", function(object, ...) { standardGeneric("summary") })
# @rdname tojson
# @export

View file

@ -89,17 +89,17 @@ setMethod("predict", signature(object = "PipelineModel"),
#' model <- glm(y ~ x, trainingData)
#' summary(model)
#'}
setMethod("summary", signature(x = "PipelineModel"),
function(x, ...) {
setMethod("summary", signature(object = "PipelineModel"),
function(object, ...) {
modelName <- callJStatic("org.apache.spark.ml.api.r.SparkRWrappers",
"getModelName", x@model)
"getModelName", object@model)
features <- callJStatic("org.apache.spark.ml.api.r.SparkRWrappers",
"getModelFeatures", x@model)
"getModelFeatures", object@model)
coefficients <- callJStatic("org.apache.spark.ml.api.r.SparkRWrappers",
"getModelCoefficients", x@model)
"getModelCoefficients", object@model)
if (modelName == "LinearRegressionModel") {
devianceResiduals <- callJStatic("org.apache.spark.ml.api.r.SparkRWrappers",
"getModelDevianceResiduals", x@model)
"getModelDevianceResiduals", object@model)
devianceResiduals <- matrix(devianceResiduals, nrow = 1)
colnames(devianceResiduals) <- c("Min", "Max")
rownames(devianceResiduals) <- rep("", times = 1)

View file

@ -113,3 +113,9 @@ test_that("summary coefficients match with native glm of family 'binomial'", {
rownames(stats$Coefficients) ==
c("(Intercept)", "Sepal_Length", "Sepal_Width")))
})
test_that("summary works on base GLM models", {
baseModel <- stats::glm(Sepal.Width ~ Sepal.Length + Species, data = iris)
baseSummary <- summary(baseModel)
expect_true(abs(baseSummary$deviance - 12.19313) < 1e-4)
})