Skip to content

Instantly share code, notes, and snippets.

@tukachev
Last active August 29, 2015 13:56
Show Gist options
  • Save tukachev/8871947 to your computer and use it in GitHub Desktop.
Save tukachev/8871947 to your computer and use it in GitHub Desktop.
Функция для вычисления Фи-коэффициента Гилфорда для четырехклеточных таблиц
#Функция для вычисления Фи-коэффициента Гилфорда для четырехклеточных таблиц
#Guilford J. P. The phi-coefficient and chi-square as indices of item validity. — Psychometrika. 1941. VI. P. 11—19.
phi.coeff <- function(x){
#Проверка
if (!is.matrix(x))
stop("Function only defined for 2-way tables.")
a <- x[1,1]
b <- x[1,2]
c <- x[2,1]
d <- x[2,2]
n <- sum(x)
#Вводим поправку для числителя в виде половинной численности элементов таблицы
#как это сделал сам Guilford (1941)
phi.coeff <- ((a*d - b*c) - 0.5*n) / sqrt(((a + b)*(c + d)*(a + c)*(b + d)))
chi.sq <- phi.coeff^2*n
phi.coeff <- round(phi.coeff, 4)
pval <- round(1 - pchisq(chi.sq, df = 1), 4) #Р-уровень
structure(list(table = x, chisq_statistic = chi.sq, phi = phi.coeff, p = pval))
}
#Данные четырехклеточной таблицы
x <- matrix(c(15, 6, 8, 13),ncol=2)
#Пробуем нашу функцию
phi.coeff(x)
#Karl Pearson’s smallpox recovery data
#Source: Metropolitan Asylums Board: Small-pox epidemic 1893. (Pearson, 1900)
x <- matrix(c(1562, 383, 42, 94),ncol=2,
dimnames = list(c("Vaccinated", "Unvaccinated"),
c("Recovery", "Death")))
#Дополнение в функцию (?)
#Pearson’s contingency coefficient (C)
C <- sqrt(chi.sq / (chi.sq + n))
Cadj <- C / 0.71
w <- sqrt(C^2 / (1 - C^2))
#The Odds-Ratio (OR)
ln <- function(x) { log(x, 2.718281828)}
OR <- (a*d) / (b*c)
#Test of significance for an odds ratio
SE <- sqrt(1/a + 1/b + 1/c + 1/d)
Z <- ln(OR) / SE
Zpval <- round(1 - pnorm(Z), 4)
#d Cox effect size
d.Cox <- ln(OR) / 1.65
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment