testGeneric {DHARMa} | R Documentation |

This function tests if a user-defined summary differs when applied to simulated / observed data.

```
testGeneric(simulationOutput, summary, alternative = c("two.sided",
"greater", "less"), plot = T,
methodName = "DHARMa generic simulation test")
```

`simulationOutput` |
an object of class DHARMa, either created via |

`summary` |
a function that can be applied to simulated / observed data. See examples below |

`alternative` |
a character string specifying whether the test should test if observations are "greater", "less" or "two.sided" compared to the simulated null hypothesis |

`plot` |
whether to plot the simulated summary |

`methodName` |
name of the test (will be used in plot) |

This function tests if a user-defined summary differs when applied to simulated / observed data. the function can easily be remodeled to apply summaries on the residuals, by simply defining f = function(x) summary (x - predictions), as done in `testDispersion`

The function that you supply is applied on the data as it is represented in your fitted model, which may not always correspond to how you think. This is important in particular when you use k/n binomial data, and want to test for 1-inflation. As an example, if have k/20 observations, and you provide your data via cbind (y, y-20), you have to test for 20-inflation (because this is how the data is represented in the model). However, if you provide data via y/20, and weights = 20, you should test for 1-inflation. In doubt, check how the data is internally represented in model.frame(model), or via simulate(model)

Florian Hartig

`testResiduals`

, `testUniformity`

, `testOutliers`

, `testDispersion`

, `testZeroInflation`

, `testGeneric`

, `testTemporalAutocorrelation`

, `testSpatialAutocorrelation`

, `testQuantiles`

, `testCategorical`

```
testData = createData(sampleSize = 100, overdispersion = 0.5, randomEffectVariance = 0)
fittedModel <- glm(observedResponse ~ Environment1 , family = "poisson", data = testData)
simulationOutput <- simulateResiduals(fittedModel = fittedModel)
# the plot function runs 4 tests
# i) KS test i) Dispersion test iii) Outlier test iv) quantile test
plot(simulationOutput, quantreg = TRUE)
# testResiduals tests distribution, dispersion and outliers
# testResiduals(simulationOutput)
####### Individual tests #######
# KS test for correct distribution of residuals
testUniformity(simulationOutput)
# KS test for correct distribution within and between groups
testCategorical(simulationOutput, testData$group)
# Dispersion test - for details see ?testDispersion
testDispersion(simulationOutput) # tests under and overdispersion
# Outlier test (number of observations outside simulation envelope)
# Use type = "boostrap" for exact values, see ?testOutliers
testOutliers(simulationOutput, type = "binomial")
# testing zero inflation
testZeroInflation(simulationOutput)
# testing generic summaries
countOnes <- function(x) sum(x == 1) # testing for number of 1s
testGeneric(simulationOutput, summary = countOnes) # 1-inflation
testGeneric(simulationOutput, summary = countOnes, alternative = "less") # 1-deficit
means <- function(x) mean(x) # testing if mean prediction fits
testGeneric(simulationOutput, summary = means)
spread <- function(x) sd(x) # testing if mean sd fits
testGeneric(simulationOutput, summary = spread)
```

[Package *DHARMa* version 0.4.5 Index]