Learn R Programming

⚠️There's a newer version (1.0.7) of this package.Take me there.

infer R Package

The objective of this package is to perform statistical inference using an expressive statistical grammar that coheres with the tidyverse design framework. The package is centered around 4 main verbs, supplemented with many utilities to visualize and extract value from their outputs.

  • specify() allows you to specify the variable, or relationship between variables, that you’re interested in.
  • hypothesize() allows you to declare the null hypothesis.
  • generate() allows you to generate data reflecting the null hypothesis.
  • calculate() allows you to calculate a distribution of statistics from the generated data to form the null distribution.

To learn more about the principles underlying the package design, see vignette("infer").

If you’re interested in learning more about randomization-based statistical inference generally, including applied examples of this package, we recommend checking out Statistical Inference Via Data Science: A ModernDive Into R and the Tidyverse and Introduction to Modern Statistics.

Installation


To install the current stable version of infer from CRAN:

install.packages("infer")

To install the developmental stable version of infer, make sure to install remotes first. The pkgdown website for this version is at infer.tidymodels.org.

install.packages("remotes")
remotes::install_github("tidymodels/infer")

Contributing


We welcome others helping us make this package as user-friendly and efficient as possible. Please review our contributing and conduct guidelines. By participating in this project you agree to abide by its terms.

For questions and discussions about tidymodels packages, modeling, and machine learning, please post on RStudio Community. If you think you have encountered a bug, please submit an issue. Either way, learn how to create and share a reprex (a minimal, reproducible example), to clearly communicate about your code. Check out further details on contributing guidelines for tidymodels packages and how to get help.

Examples


These examples are pulled from the “Full infer Pipeline Examples” vignette, accessible by calling vignette("observed_stat_examples"). They make use of the gss dataset supplied by the package, providing a sample of data from the General Social Survey. The data looks like this:

# load in the dataset
data(gss)

# take a glimpse at it
str(gss)
## tibble [500 × 11] (S3: tbl_df/tbl/data.frame)
##  $ year   : num [1:500] 2014 1994 1998 1996 1994 ...
##  $ age    : num [1:500] 36 34 24 42 31 32 48 36 30 33 ...
##  $ sex    : Factor w/ 2 levels "male","female": 1 2 1 1 1 2 2 2 2 2 ...
##  $ college: Factor w/ 2 levels "no degree","degree": 2 1 2 1 2 1 1 2 2 1 ...
##  $ partyid: Factor w/ 5 levels "dem","ind","rep",..: 2 3 2 2 3 3 1 2 3 1 ...
##  $ hompop : num [1:500] 3 4 1 4 2 4 2 1 5 2 ...
##  $ hours  : num [1:500] 50 31 40 40 40 53 32 20 40 40 ...
##  $ income : Ord.factor w/ 12 levels "lt $1000"<"$1000 to 2999"<..: 12 11 12 12 12 12 12 12 12 10 ...
##  $ class  : Factor w/ 6 levels "lower class",..: 3 2 2 2 3 3 2 3 3 2 ...
##  $ finrela: Factor w/ 6 levels "far below average",..: 2 2 2 4 4 3 2 4 3 1 ...
##  $ weight : num [1:500] 0.896 1.083 0.55 1.086 1.083 ...

As an example, we’ll run an analysis of variance on age and partyid, testing whether the age of a respondent is independent of their political party affiliation.

Calculating the observed statistic,

F_hat <- gss %>% 
  specify(age ~ partyid) %>%
  calculate(stat = "F")

Then, generating the null distribution,

null_dist <- gss %>%
   specify(age ~ partyid) %>%
   hypothesize(null = "independence") %>%
   generate(reps = 1000, type = "permute") %>%
   calculate(stat = "F")

Visualizing the observed statistic alongside the null distribution,

visualize(null_dist) +
  shade_p_value(obs_stat = F_hat, direction = "greater")

Calculating the p-value from the null distribution and observed statistic,

null_dist %>%
  get_p_value(obs_stat = F_hat, direction = "greater")
## # A tibble: 1 × 1
##   p_value
##     <dbl>
## 1   0.055

Note that the formula and non-formula interfaces (i.e. age ~ partyid vs. response = age, explanatory = partyid) work for all implemented inference procedures in infer. Use whatever is more natural for you. If you will be doing modeling using functions like lm() and glm(), though, we recommend you begin to use the formula y ~ x notation as soon as possible.

Other resources are available in the package vignettes! See vignette("observed_stat_examples") for more examples like the one above, and vignette("infer") for discussion of the underlying principles of the package design.

Copy Link

Version

Install

install.packages('infer')

Monthly Downloads

37,997

Version

1.0.4

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Last Published

December 2nd, 2022

Functions in infer (1.0.4)

calculate

Calculate summary statistics
chisq_test

Tidy chi-squared test
chisq_stat

Tidy chi-squared test statistic
gss

Subset of data from the General Social Survey (GSS).
get_p_value

Compute p-value
generate

Generate resamples, permutations, or simulations
assume

Define a theoretical distribution
fit.infer

Fit linear models to infer objects
deprecated

Deprecated functions and objects
get_confidence_interval

Compute confidence interval
reexports

Objects exported from other packages
print.infer

Print methods
hypothesize

Declare a null hypothesis
shade_confidence_interval

Add information about confidence interval
observe

Calculate observed statistics
%>%

Pipe
infer

infer: a grammar for statistical inference
specify

Specify response and explanatory variables
rep_sample_n

Perform repeated sampling
t_stat

Tidy t-test statistic
prop_test

Tidy proportion test
t_test

Tidy t-test
visualize

Visualize statistical inference
shade_p_value

Shade histogram area beyond an observed statistic