Как составить таблицу сопряженности над списком в r - PullRequest
0 голосов
/ 28 апреля 2018

Основная переменная воздействия - aff. Я хочу получить таблицы сопряженности для aff и все переменные в varlist. Затем я хочу сделать тест хи-квадрат, используя эти таблицы сопряженности. Мои коды следующие:

name=names(data)
varlist=name[11:40]
models=lapply(varlist, function(x) {
          chisq.test(table(substitute(data$i,list(i = as.name(x))),data$aff))
 })
lapply(models, summary)

Но я получил ошибку

Error in unique.default(x, nmax = nmax) : 
  unique() applies only to vectors

Как это исправить?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Предположим, ваши данные похожи на mtcars, где vs, am, gear и carb являются категориальными переменными, вы можете создать такую ​​функцию:

df_list_f <- function(x) chisq.test(table(df2$cyl, x))
df2 <- mtcars[,8:11] # df2 contains the columns vs, am, gear and carb
lapply(df2, df_list_f)
0 голосов
/ 28 апреля 2018

Я думаю, что вы слишком усложняете вещи, используя substitute и тому подобное. Без ваших данных я попробую с mtcars, используя cyl в качестве переменной экспозиции.

data <- mtcars
name <- names(data)
ev <- "cyl"
varlist <- name[ name != ev ]
models <- lapply(varlist, function(nm) {
  chisq.test(table(data[[nm]], data[[ev]]))
})
# Warning messages:
# 1: In chisq.test(table(data[[nm]], data[[ev]])) :
#   Chi-squared approximation may be incorrect

(поскольку я использую плохой пример для теста, здесь много предупреждений; это можно игнорировать при использовании mtcars, потому что это действительно не очень хороший набор данных для этого теста.)

summaries <- lapply(models, summary)
str(summaries[1:2])
# List of 2
#  $ : 'summaryDefault' chr [1:9, 1:3] " 1" " 1" " 1" " 1" ...
#   ..- attr(*, "dimnames")=List of 2
#   .. ..$ : chr [1:9] "statistic" "parameter" "p.value" "method" ...
#   .. ..$ : chr [1:3] "Length" "Class" "Mode"
#  $ : 'summaryDefault' chr [1:9, 1:3] " 1" " 1" " 1" " 1" ...
#   ..- attr(*, "dimnames")=List of 2
#   .. ..$ : chr [1:9] "statistic" "parameter" "p.value" "method" ...
#   .. ..$ : chr [1:3] "Length" "Class" "Mode"
...