Skip to content
Merged

Dev #17

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
157 changes: 82 additions & 75 deletions README.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,22 @@ min.r <- substr(description[, "Depends"], 7, 11)

<!-- badges: end -->

The InPlotSampling package provides a way for researchers to easily implement Ranked Set Sampling in practice.
The InPlotSampling package provides a way for researchers to easily implement these sampling methods in
practice.

- Judgment post-stratified (JPS) sampling
- Ranked set sampling (RSS)
- Porbability-proportional to size (PPS) sampling
- Spatially balanced sampling (SBS)
- Two-stage cluster sampling

## Table of Contents

<!-- vim-markdown-toc GFM -->

* [Sampling Methods](#sampling-methods)
* [JPS Sampling](#jps-sampling)
* [RSS Sampling](#rss-sampling)
* [RSS](#rss-sampling)
* [Installation](#installation)
* [Examples](#examples)
* [JPS Sample and Estimator](#jps-sample-and-estimator)
Expand All @@ -64,17 +71,17 @@ Sampling is made following the diagram below.

![JPS sampling diagram](man/figures/jps-diagram.drawio.svg)

### RSS Sampling
### RSS

Sampling is made following the diagram below.

![RSS sampling diagram](man/figures/rss-diagram.drawio.svg)
![RSS diagram](man/figures/rss-diagram.drawio.svg)

## Installation

Use the following code to install this package:

```{r eval=F}
```{r, eval=F}
if (!require("remotes")) install.packages("remotes")
remotes::install_github("AAGI-AUS/InPlotSampling", upgrade = FALSE)
```
Expand All @@ -84,81 +91,81 @@ remotes::install_github("AAGI-AUS/InPlotSampling", upgrade = FALSE)
### JPS Sample and Estimator

<details>
<summary>JPS sample and estimator</summary>

``` r
set.seed(112)
population_size <- 600
# the number of samples to be ranked in each set
H <- 3

with_replacement <- FALSE
sigma <- 4
mu <- 10
n_rankers <- 3
# sample size
n <- 30

rhos <- rep(0.75, n_rankers)
taus <- sigma * sqrt(1 / rhos^2 - 1)
population <- qnorm((1:population_size) / (population_size + 1), mu, sigma)

data <- InPlotSampling::jps_sample(population, n, H, taus, n_rankers, with_replacement)
data <- data[order(data[, 2]), ]

InPlotSampling::rss_jps_estimate(
data,
set_size = H,
method = "JPS",
confidence = 0.80,
replace = with_replacement,
model_based = FALSE,
pop_size = population_size
)
#> Estimator Estimate Standard Error 80% Confidence intervals
#> 1 UnWeighted 9.570 0.526 8.88,10.26
#> 2 Sd.Weighted 9.595 0.569 8.849,10.341
#> 3 Aggregate Weight 9.542 0.500 8.887,10.198
#> 4 JPS Estimate 9.502 0.650 8.651,10.354
#> 5 SRS estimate 9.793 0.783 8.766,10.821
#> 6 Minimum 9.542 0.500 8.887,10.198
```
<summary>JPS sample and estimator</summary>

``` r
set.seed(112)
population_size <- 600
# the number of samples to be ranked in each set
H <- 3

with_replacement <- FALSE
sigma <- 4
mu <- 10
n_rankers <- 3
# sample size
n <- 30

rhos <- rep(0.75, n_rankers)
taus <- sigma * sqrt(1 / rhos^2 - 1)
population <- qnorm((1:population_size) / (population_size + 1), mu, sigma)

data <- InPlotSampling::jps_sample(population, n, H, taus, n_rankers, with_replacement)
data <- data[order(data[, 2]), ]

InPlotSampling::rss_jps_estimate(
data,
set_size = H,
method = "JPS",
confidence = 0.80,
replace = with_replacement,
model_based = FALSE,
pop_size = population_size
)
#> Estimator Estimate Standard Error 80% Confidence intervals
#> 1 UnWeighted 9.570 0.526 8.88,10.26
#> 2 Sd.Weighted 9.595 0.569 8.849,10.341
#> 3 Aggregate Weight 9.542 0.500 8.887,10.198
#> 4 JPS Estimate 9.502 0.650 8.651,10.354
#> 5 SRS estimate 9.793 0.783 8.766,10.821
#> 6 Minimum 9.542 0.500 8.887,10.198
```
</details>

### SBS PPS Sample and Estimator

<details>
<summary>SBS PPS sample and estimator</summary>

``` r
set.seed(112)

# SBS sample size, PPS sample size
sample_sizes <- c(5, 5)

n_population <- 233
k <- 0:(n_population - 1)
x1 <- sample(1:13, n_population, replace = TRUE) / 13
x2 <- sample(1:8, n_population, replace = TRUE) / 8
y <- (x1 + x2) * runif(n = n_population, min = 1, max = 2) + 1
measured_sizes <- y * runif(n = n_population, min = 0, max = 4)

population <- matrix(cbind(k, x1, x2, measured_sizes), ncol = 4)
sample_result <- sbs_pps_sample(population, sample_sizes)

# estimate the population mean and construct a confidence interval
df_sample <- sample_result$sample
sample_id <- df_sample[, 1]
y_sample <- y[sample_id]

sbs_pps_estimates <- sbs_pps_estimate(
population, sample_sizes, y_sample, df_sample,
n_bootstrap = 100, alpha = 0.05
)
print(sbs_pps_estimates)
#> n1 n2 Estimate St.error 95% Confidence intervals
#> 1 5 5 2.849 0.1760682 2.451,3.247
```
<summary>SBS PPS sample and estimator</summary>

``` r
set.seed(112)

# SBS sample size, PPS sample size
sample_sizes <- c(5, 5)

n_population <- 233
k <- 0:(n_population - 1)
x1 <- sample(1:13, n_population, replace = TRUE) / 13
x2 <- sample(1:8, n_population, replace = TRUE) / 8
y <- (x1 + x2) * runif(n = n_population, min = 1, max = 2) + 1
measured_sizes <- y * runif(n = n_population, min = 0, max = 4)

population <- matrix(cbind(k, x1, x2, measured_sizes), ncol = 4)
sample_result <- sbs_pps_sample(population, sample_sizes)

# estimate the population mean and construct a confidence interval
df_sample <- sample_result$sample
sample_id <- df_sample[, 1]
y_sample <- y[sample_id]

sbs_pps_estimates <- sbs_pps_estimate(
population, sample_sizes, y_sample, df_sample,
n_bootstrap = 100, alpha = 0.05
)
print(sbs_pps_estimates)
#> n1 n2 Estimate St.error 95% Confidence intervals
#> 1 5 5 2.849 0.1760682 2.451,3.247
```
</details>

# Citing this package
Expand Down
Loading
Loading