# RELEASE NOTES ## spatstat 1.42-0 ### 27 May 2015 We thank Anders Bilgrau, Ute Hahn, Jack Hywood, Tuomas Rajala, Cody Schank, Olivia Semboli and Ben Taylor for contributions. ### OVERVIEW * Version nickname: 'Life, The Universe and Everything' * Permutation test for difference between groups of point patterns. * Variational Bayes estimation for point process models. * Score test in anova.ppm * ROC curve, and discrimination index AUC, for fitted models. * Interactive text editor for spatial datasets. * Tools for analysing data on a tree. * Kernel density/intensity estimation on a linear network. * Random pixel noise. * Improved behaviour of polygon geometry operations. * Improved support for cluster and Cox models. * Improved basic support for owin objects. * Improved support for tessellations. * More hierarchical Gibbs interactions. * Modifications to Kest. * summary method for Cox and cluster models. * class 'listof' is almost completely replaced by 'anylist' and 'solist'. * Improvements and bug fixes. * spatstat now depends on R version 3.2.0 or later. ### NEW FUNCTIONS * studpermu.test Studentised permutation test for difference between groups of point patterns. Generously contributed by Ute Hahn. * AIC.kppm, extractAIC.kppm, logLik.kppm, nobs.kppm Methods for computing AIC for fitted Cox and cluster models. * transmat Convert pixel arrays between different display conventions. * roc Receiver Operating Characteristic curve. * auc Discrimination index AUC (area under the ROC curve) * edit.ppp, edit.psp, edit.im Interactive text editor works for spatial datasets. * edit.hyperframe Interactive text editor works for hyperframes. * parameters Extract all parameters from a fitted model. * density.lpp Kernel estimation of point process intensity on a linear network. * extractbranch, deletebranch, treeprune, treebranchlabels, begins Tools for analysing data on a tree. * rnoise Random pixel noise. * as.data.frame.owin Convert a window to a data frame. * harmonise.owin Convert several binary mask windows to a common pixel grid. * copyExampleFiles Copy the raw data files from an installed dataset to a chosen folder, for use in a practice exercise. * density.ppplist Method for 'density' for lists of point patterns. * inradius Radius of largest circle inside a window. * mergeLevels Merge different levels of a factor. * relevel.im, relevel.ppp, relevel.ppx Change the reference level of a factor. * simulate.profilepl simulation method for models fitted by profile maximum pseudolikelihood. * predict.rho2hat Prediction method for class rho2hat * with.msr Evaluate (an expression involving) components of a measure. * summary.kppm, print.summary.kppm, coef.summary.kppm Methods for 'summary' and 'coef(summary(..))' for Cox and cluster models. * as.im.funxy Method for as.im for class funxy. * shift.linim, scalardilate.linim, affine.linim Geometrical transformations for 'linim' objects. * Smooth.solist Smooth method for a list of spatial objects. * unitname.tess, unitname<-.tess Tessellations now keep track of the name of the unit of length. * dirichletAreas Faster algorithm for tile.areas(dirichlet(X)). * identify.lpp Method for 'identify' for point patterns on a linear network. * HierStraussHard, HierHard Hierarchical interactions for Gibbs models. * delaunayDistance, delaunayNetwork, dirichletEdges, dirichletNetwork, dirichletVertices, dirichletWeights These functions will replace delaunay.distance, delaunay.network, dirichlet.edges, dirichlet.network, dirichlet.vertices and dirichlet.weights respectively. The latter are now 'deprecated'. ### SIGNIFICANT USER-VISIBLE CHANGES * ppm Now supports Variational Bayes fitting method. * kppm 'AIC' and 'step' now work for kppm objects fitted using maximum Palm likelihood. * kppm The default for the weight function 'weightfun' has been changed, for better performance. * envelope envelope methods now have argument 'use.theory' specifying whether to use the 'theoretical' value of the summary function when constructing simultaneous envelopes. * anova.ppm Now performs the Score Test, for Poisson models only, if argument test="Rao" or test="score". * Kest New argument 'rmax' controls maximum value of argument 'r' * diagnose.ppm Now computes and prints the null standard deviation of the smoothed Pearson residual field, when appropriate. * nncorr, nnmean, nnvario New argument 'k' specifies k-th nearest neighbour. * quadrat.test.ppp, quadrat.test.quadratcount New argument 'lambda' supports a test of the Poisson process with given intensity 'lambda'. * clickpoly, clickbox These functions now handle graphical arguments to polygon() when drawing the resulting polygon or rectangle. * owin, as.owin, as.mask owin(mask=D) or as.owin(D) or as.mask(D) will produce a binary mask window if D is a data frame with two columns of (x,y) coordinates or a data frame with three columns containing (x,y,logical). * as.owin.data.frame W can now be a data frame with only two columns, giving the spatial coordinates of the pixels that are inside the window. * rose Tick marks now have labels showing the angle (in degrees or radians). * distcdf New argument 'regularise' determines whether values at short distances will be smoothed to avoid discretisation artefacts. * rpoislinetess Return value now has an attribute 'lines' giving the realisation of the Poisson line process. * intersect.owin, union.owin, setminus.owin New argument 'p' controls resolution of polygon clipping algorithm. * intersect.owin, union.owin Arguments may be lists of windows, of class 'solist'. Formal arguments A and B have been removed. * superimpose Now handles lists of point patterns (objects of class 'ppplist' or 'splitppp') * density.ppp New argument 'positive' allows the user to stipulate that density values must be positive (avoiding numerical errors which occasionally produce small negative values). * adaptive.density Now accepts f = 0 (uniform intensity estimate) and f = 1 (Voronoi intensity estimate) as well as 0 < f < 1. Algorithm accelerated. * rSSI Can now generate inhomogeneous patterns. * effectfun Now works for 'kppm' and 'lppm' objects as well. * integral.im, integral.msr Argument 'domain' can now be a tessellation; the integral over each tile of the tessellation is returned. * allstats, compareFit, markcorr, split.ppx, by.ppp Result is now of class 'anylist'. * by.im, density.splitppp, idw, model.images, nnmark, pixellate.ppp, predict.lppm, predict.ppm, quadratcount.splitppp, quadratresample, relrisk, Smooth.msr, split.im, tiles Result is now of class 'solist'. * split.ppp New argument 'reduce'. Result now inherits class 'ppplist' and 'solist', as well as 'splitppp' * rLGCP New argument 'nsim' allows multiple patterns to be generated. * alltypes New argument 'reuse' determines whether all simulation envelopes are based on the same set of simulated patterns, or on independent sets. * rpoispp, runifpoint New argument 'ex' makes it possible to generate a random pattern similar to an example point pattern. * effectfun Argument 'covname' is not needed if the model has only one covariate. * quadratcount Argument 'tess' can now be anything acceptable to as.tess. * tess New argument 'unitname' specifies the name of the unit of length. If it is missing, unitname information will be extracted from the other data. * intersect.tess, chop.tess, quadrats Results of these functions now have the same 'unitname' as their input. * persp.im, nnclean, plot.qqppm, plot.bw.optim These plotting functions now obey spatstat.options('monochrome') * lurking Now returns an object of class 'lurk' which has a plot method. Two-standard-deviation limits are now plotted using grey shading. * marktable New argument 'N' for studying the N nearest neighbours. New argument 'collapse' for manipulating the contingency table. * harmonise.fv Now discards columns with names which do not match. * eval.fv New argument 'equiv' can be used to declare that two columns with different names in different objects are equivalent. * quantile.ewcdf New argument 'type' controls the type of quantile. * plot.imlist New argument 'plotcommand' specifies how to plot each image. * persp.im The lower extent of the apron can now be controlled by 'zlim'. * quadscheme Argument 'method' is partially matched. * Kdot, Ldot New argument 'from' is an alternative to 'i'. * Kcross, Lcross New arguments 'from' and 'to' are alternatives to 'i' and 'j' respectively. * varblock Changed the ordering (and therefore default colours/styles) of curves in the plot, to match other functions like lohboot. * bw.diggle New argument 'nr' controls accuracy. * textureplot Now accepts a pixel image, a tessellation, or anything acceptable to as.tess. * textureplot Line spacing in legend now matches line spacing in main display. * [.tess Subset index can now be a window. * plot.tess Can now plot a text label in each tile. * plot.tess New argument 'do.plot'. * MultiHard, MultiStrauss, MultiStraussHard, HierStrauss Printed output of fitted model now respects spatstat.options('terse'). * print.ppm Reduced redundancy in output in some cases. * print.msr Responds better to spatstat.options('terse'). * print.ppm, print.fii, print.interact Irregular parameters are now printed to the number of significant figures specified by options("digits"). * square New argument 'unitname'. * plot.fv Return value is now invisible. * delaunay.distance, delaunay.network, dirichlet.edges, dirichlet.network, dirichlet.vertices These functions are now 'deprecated', and will be replaced by delaunayDistance, delaunayNetwork, dirichletEdges, dirichletNetwork and dirichletVertices respectively. * data(residualspaper) In the real datasets (Fig1 and Fig11), the name of the unit of length has now been recorded. * rLGCP This function now requires the package 'RandomFields' to be loaded explicitly by library(RandomFields) or require(RandomFields), unless model="exp". * iplot, istat These functions now require the package 'rpanel' to be loaded explicitly by library(rpanel) or require(rpanel). * ppm, quadscheme Improved calculation of Dirichlet weights. * countends New argument 'toler' controls numerical errors * diagnose.ppm Improved handling of additional graphics arguments. * pcf3est Mathematical labels changed. * plot.hyperframe Default margin spacing has been increased. ### BUG FIXES 1. Kinhom, Linhom The value of 'theo' was erroneously rescaled by a small amount, when renormalise=TRUE (the default). Fixed. 2. Kmark Values were erroneously rescaled. Fixed. 3. union.owin Strange results were sometimes obtained when taking the union of more than two windows. Fixed. 4. rpoispp3 Implementation was incorrect for nsim > 1. (Results may have been incorrect.) Spotted by Jack Hywood. Fixed. 5. as.owin.data.frame Crashed if the window was not connected. Fixed. 6. Frame<- Crashed when applied to a binary mask. Fixed. 7. rho2hat Crashed if cov1="x" and cov2="y". Fixed. 8. as.mask Crashed sometimes when only the argument 'xy' was given. Fixed. 9. ppm Crashed (rarely) when method='ho' if the simulated pattern was empty. Fixed. 10. istat, iplot Crashed in recent versions of rpanel. Fixed. 11. convexhull Crashed if applied to a 'psp' object. Fixed. 12. plot.ppm Crashed with message about 'variable lengths differ'. Fixed. 13. plot.solist Crashed when applied to a list of point patterns if some patterns had more than one column of marks. Fixed. 14. Smooth.ppp Crashed if applied to a point pattern with several columns of marks if some of the columns were factors. Fixed. 15. runifpoint3, rpoispp3 Crashed if nsim > 1. Spotted by Jack Hywood. Fixed. 16. hist.im Crashed if argument 'freq' was given. Fixed. 17. MultiStraussHard Generated misleading error messages (e.g. 'model is invalid') when arguments 'iradii' and 'hradii' did not have the same pattern of NA's. Fixed. 18. plot.solist Figures were sometimes aligned incorrectly when the argument 'panel.args' was given. Fixed. 19. scaletointerval Results sometimes fell slightly outside the desired interval due to numerical error. Fixed. 20. plot.solist Behaved incorrectly when plotcommand='persp'. Fixed. 21. "[.hyperframe" Sometimes returned an 'anylist' when it should have returned a 'solist'. Fixed. 22. plot.im Did not plot surrounding frame box when ribbon=FALSE. Fixed. 23. envelope The functions stored when savefuns=TRUE did not inherit the correct name for the unit of length. Fixed. 24. print.ppm, print.fii, print.interact Layout was misaligned. Fixed. 25. plot.plotppm Paused for input when it was not appropriate. Fixed. 26. plot.fv On png devices, the legend box was drawn with a white background, obscuring the main plot. Fixed. 27. plot.owin, plot.ppp, plot.im There was unnecessary extra space above the main title. Fixed. 28. plot.rho2hat Colour map ribbon was drawn but not annotated. Fixed. 29. density.splitppp, density.ppplist Format was out of order if se=TRUE. Fixed. 30. MultiStraussHard project.ppm sometimes yielded a model that was still invalid. Fixed.