[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:
parent
1431319e5b
commit
c4e19b3819
|
@ -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)
|
||||
})
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue