Getting started
Installing it, finding your way around, and what happens to your data. New here? Start with the walkthrough. For what the app actually computes — the function behind each analysis and what the numbers mean — see the Reference.
Installation
One line installs and launches everything — R (if you don't have it), the app, and its R packages, into your user folder. No admin rights, no Docker. You run this once; on Windows it then creates a Desktop shortcut you use from then on.
iwr -useb https://easyanalysis.dev/install.ps1 | iex
curl -fsSL https://easyanalysis.dev/install.sh | sh
What it does, in order: finds or downloads a portable R → downloads the app → installs missing packages into a private library → starts the app and opens your browser. The first run can take several minutes; later runs start in seconds because each step is cached.
On Windows it also creates an EasyAnalysis shortcut on your Desktop and in the Start Menu, so afterwards you can start the app by double-clicking it — no terminal at all. The shortcut opens minimised rather than hidden, so there is still a window to check if anything goes wrong. Desktop shortcuts are Windows-only for now; on macOS and Linux, re-run the install line to start the app again.
To close the app, use the Quit button at the top right. It stops the R session properly; closing the launcher window also works.
On Windows R is downloaded automatically if you don't have it. On macOS/Linux an existing R is used; if there is none the script installs it with Homebrew where available, or tells you the single command for your system. Spatial packages compile from source on macOS/Linux, so the first run takes longer there.
Requirements
| Item | Needed |
|---|---|
| OS | Windows, macOS and Linux |
| R | Windows: downloaded automatically if missing. macOS/Linux: an existing R is used, or installed via Homebrew / your package manager |
| Disk | ~2 GB for R and the spatial packages |
| Memory | 8 GB is comfortable; large point clouds want more |
| Internet | Only for install, package downloads, basemap tiles and satellite search |
| Account | None. There is no sign-in and no cloud service. |
The workspace
One frame holds everything, so you never switch screens mid-analysis.
| Region | What it holds |
|---|---|
| Menu bar | Project · Edit · View · Add Data · Processing · Controls · Packages · Settings · Help, plus a tool search box |
| Layers panel (left) | Every dataset and layer, each with a visibility switch and an expandable legend / styling |
| Canvas (centre) | The map, the chart builder, or the active tool's results |
| Tool panel (right) | The open tool's settings; can be floated or minimised |
| Results dock (far right) | Past results, as chips — click to pop one out, drag and resize it |
| R console (bottom) | Slides up on demand for direct R |
| Status bar | Project, active dataset, dimensions, memory in use, and where the project is saved |
Views: Map view for spatial layers, Data view for tables and charts, and Split for both with a draggable divider. The app opens on whichever suits your data and then leaves the choice to you.
Methods available
| Group | Methods |
|---|---|
| Data | Column management, row filtering, type conversion, factor levels, aggregation, binning, imputation, joins, batch apply; descriptive statistics and correlation |
| Statistics | t-tests and non-parametric tests, chi-square, ANOVA with Tukey HSD, linear regression (multiple, polynomial, ridge/lasso, Poisson), logistic and multinomial regression, linear mixed effects, GAM, survival analysis, SEM and mediation, Bayesian analysis, time series |
| Machine learning | Random forest, XGBoost, decision trees, support vector machines, neural networks, discriminant analysis (LDA, WLDA, QDA, RLDA, KDA, LLDA, MMC), clustering (k-means, hierarchical, Gower/PAM), one-vs-all classification, PCA and dimension reduction |
| Spatial & LiDAR | Raster and vector analysis, surface models (DTM/DSM/CHM), terrain analysis, hydrology, suitability modelling, land classification, night-time lights, climate trend, wind, satellite search and download, point cloud viewing, canopy height models, individual tree detection, LiDAR metrics |
Model screens report R², RMSE, bias and relative RMSE, and increasingly a plain-English reading of the result. Models only run when you press Run.
Supported files
| Kind | Extensions | Notes |
|---|---|---|
| Tables | .csv .txt .xlsx .xls | Separator and numeric detection configurable in Settings |
| Raster | .tif .tiff .img .asc .nc .grd | Drawn on the map; large rasters are downsampled for display only |
| Vector | .shp .gpkg .geojson .json | Shapefiles need all their sidecar files selected together |
| Point cloud | .las .laz | Decimated on read to protect memory |
| Project | .eap | A whole project in one file |
Map symbology
Symbology is how a layer is drawn on the map — its colours, outlines and transparency, and whether those vary with the data. Every layer keeps its own settings, and they are saved with the project, so a map you style once looks the same when you reopen it.
Where to find it
In the Layers panel, click the ▶ chevron at the right of a layer's row to expand it. The symbology controls appear beneath the layer name, along with a legend once the colours vary.
Vector layers — three ways to colour
| Mode | What it does | Use it when |
|---|---|---|
| Single symbol | Every feature drawn the same. You choose a fill colour and an outline colour. | The layer is context — boundaries, roads, a study area — and the data behind it is not what you are showing. |
| Categorised | One colour per distinct value of a column. Species, land-cover class, treatment group, yes/no. | The column holds groups. Each group gets its own colour and its own legend entry. |
| Graduated | A numeric column split into classes, shaded light to dark. Volume, height, area, density, a model prediction. | The column holds amounts, and you want to see where the high and low values are. |
Choosing a column
Only columns that suit the mode are offered, so you cannot pick something that produces a meaningless map:
- Categorised offers text, factor and yes/no columns, plus number columns whose values genuinely repeat. A number column with a different value on every feature — an ID, a measurement — is not offered, because colouring by it would give every feature its own colour and a legend as long as the layer.
- Graduated offers number columns only.
If a layer has no suitable column for the mode you picked, the panel says so rather than leaving you with an empty list.
Classes and breaks (graduated)
You can split the values into 3 to 9 classes. The class boundaries are chosen by quantiles — each class holds roughly the same number of features. This is deliberate: most measured data is skewed, and cutting it into equal-width bands would put nearly everything in one class and leave the rest almost empty. Where the values are too tied for quantiles to give distinct boundaries, equal-width bands are used instead.
The legend lists each class and the range of values it covers.
Palettes
Five colour ramps are available for categorised and graduated layers: viridis, magma, plasma, cividis and turbo. These are perceptually uniform — equal steps in the data look like equal steps in colour — and viridis, magma, plasma and cividis remain distinguishable for the most common forms of colour blindness. Cividis is the safest choice if that matters for your audience.
Outline and opacity
Two sliders apply in every mode:
- Outline width — 0 to 6. Set it to 0 for fills with no border; raise it to make thin lines easier to see and to click.
- Fill opacity — 0 to 1. Lower it to see the basemap or another layer through a polygon; set it to 0 for outline-only polygons.
Point layers also use the outline width for the ring around each point.
How it applies to each geometry type
| Geometry | What the colour drives |
|---|---|
| Points | Fill of the circle; the outline ring uses the outline colour, or the class colour when categorised or graduated. |
| Lines | The line colour. Opacity is applied more strongly than for fills, so lines stay visible. |
| Polygons | The fill. The outline keeps its own colour so class boundaries stay legible. |
Raster layers
Rasters have their own controls in the same place:
- True colour (RGB) — for imagery with three or more bands, choose which band feeds red, green and blue. Sentinel-2 and similar products are detected automatically where the bands are labelled.
- Single band — draw one band as a shaded ramp instead.
Selection is not symbology
Selected features are always outlined in red, whatever the layer's symbology. That is deliberate: a selection has to stand out from your colour scheme rather than blend into it. Clearing the selection returns the features to their normal appearance.
Projects & storage
A project is a folder on your machine. Tables are stored inside it; large spatial files are referenced in place so nothing is duplicated. Work is saved as you go — there is no Save button to forget.
- Where: your local app-data folder; the exact path is shown in the status bar.
- Save As (.eap): zips the project into one shareable file.
- Import: opens a
.eapsomeone sent you. - Export report: a self-contained HTML summary of the project.
Packages
Core methods work out of the box. Some optional ones need an extra R package — the app tells you which, and installs it for you.
- Packages ▸ Find & install — search CRAN (typos are tolerated) and install from the result row.
- Optional packages — the list of extras, showing what's already installed.
- After installing, the package is loaded immediately — no restart.
Privacy & security
The app runs entirely on your machine. There is no account, no cloud storage
and no telemetry. It listens only on 127.0.0.1, so nothing is exposed to your network.
| Goes online | When | What is sent |
|---|---|---|
| OpenAI | Only if you use the Co-Analyst | The current screen's context and a picture of the current plot, with your own API key |
| CRAN | Installing packages | Package names only |
| Basemap tiles | Viewing the map | Standard map tile requests |
| Satellite archives | Only when you search for imagery | Your search area and dates |
Your data files are never uploaded anywhere. Close the Co-Analyst and the app makes no calls that involve your data at all.
Troubleshooting
| Symptom | What to do |
|---|---|
| The browser tab is blank or stale | Hard-refresh (Ctrl+Shift+R) |
| "Port in use" | An older copy is still running — close that terminal window, then start again |
| The app stops when I close the terminal | Expected: that window is the app. Keep it open. |
| A large .laz is slow or fails | Point clouds are decimated on read, but very large files still need memory. Watch the memory reading in the status bar. |
| My raster is in the wrong place on the map | Its CRS is missing or wrong; set it in the raster tools before mapping. |
| A method says a package is missing | Packages ▸ Find & install, then run it again |
| The Co-Analyst won't answer | Add your OpenAI key with the gear icon in its panel |
How to cite
If EasyAnalysis contributed to your work, please cite it. Replace the version and year with the ones you actually used — the version is shown in Help ▸ About and in the status bar.
APA
Gibson, T. C. (2026). EasyAnalysis: point-and-click statistical, machine-learning
and spatial analysis (Version 0.11.27) [Computer software].
https://easyanalysis.dev
BibTeX
@software{gibson_easyanalysis,
author = {Gibson, Tim Casanda},
title = {{EasyAnalysis: point-and-click statistical, machine-learning and
spatial analysis}},
year = {2026},
version = {0.11.27},
url = {https://easyanalysis.dev},
note = {Computer software}
}
The repository also carries a CITATION.cff, so GitHub's Cite this repository button gives the same details in APA or BibTeX automatically.
Several screens implement published methods. Where they do, the method's own paper is listed on the References screen inside the app and should be cited alongside this one — citing the tool does not replace citing the method.