Learn R Programming

sensR (version 1.2.2)

AnotA: Analysis of A-not-A tests

Description

Computation of dprime and it's uncertainty for the monadic A-not-A test together with the one-tailed P-value of the difference test (Fisher's Exact test).

Usage

AnotA(x1, n1, x2, n2, ...)

Arguments

x1
The number of (correct) A-answers on A-samples
n1
The total number of A-samples
x2
The number of A-answers on not-A-samples
n2
The number of not-A-samples
...
Additional arguments passed to glm

Value

  • An object of class "discrim" (which has a print method). This is a list with elements
  • coefficientsnamed vector of coefficients (d-prime)
  • res.glmthe glm-object from the fitting process
  • vcovvariance-covariance matrix of the coefficients
  • senamed vector with standard error of the coefficients (standard error of d-prime
  • dataa named vector with the data supplied to the function
  • p.valueone-sided p-value from Fisher's exact test (fisher.test)
  • testa string with the name of the test (A-Not A) for the print method
  • callthe matched call

Details

The function uses the glm and fisher.test functions of the stats package. Note that all arguments have to be positive integers.

References

Brockhoff, P.B. and Christensen, R.H.B. (2010). Thurstonian models for sensory discrimination tests as generalized linear models. Food Quality and Preference, 21, pp. 330-338.

See Also

print.discrim, discrim, discrimPwr, discrimSim, discrimSS, findcr

Examples

Run this code
# data: 10 of the A-samples were judged to be A
#       20 A-samples in total
#       3 of the not-A samples were judged to be A
#       20 not-A-samples in total

AnotA(10, 20, 3, 20)

## Extended example plotting the profile likelihood
xt <- cbind(c(3, 10), c(20 - 3, 20 - 10))
lev <- gl(2, 1)
summary(res <- glm(xt ~ lev,
                   family = binomial(link = probit)))
N <- 100
dev <- double(N)
level <- c(0.95, 0.99)
delta <- seq(1e-4, 5, length = N)
for(i in 1:N)
  dev[i] <- glm(xt ~ 1 + offset(c(0, delta[i])),
                family = binomial(probit))$deviance
plot(delta, exp(-dev/2), type = "l",
     xlab = expression(delta),
     ylab = "Normalized Profile Likelihood")
## Add Normal approximation:
lines(delta, exp(-(delta - coef(res)[2])^2 /
                 (2 * vcov(res)[2,2])), lty = 2)
## Add confidence limits:
lim <- sapply(level, function(x)
              exp(-qchisq(x, df=1)/2) )
abline(h = lim, col = "grey")

Run the code above in your browser using DataLab