Цикл T-теста студента и хи-квадрат с отсутствующими данными в R

Я пытаюсь использовать R для запуска t-теста студента и теста хи-квадрат с большими наборами данных. Поскольку я новичок в R, моя неопытность не позволяет мне добиться большого успеха в моем собственном коде.

В обоих наборах данных отсутствуют данные, и они выглядят примерно так:

 AA               assayX activity        assayY1 activity      assayY2 activity
  chemical 1           TRUE                       0                12.2    
  chemical 2           TRUE                                        0
  chemical 3                                      45.2             35.6
  chemical 4           FALSE                      0                0 

 AB                assayX activity        assayY1 activity       assayY2 activity
 chemical 1           TRUE                       FALSE             TRUE
 chemical 2           TRUE                                         FALSE
 chemical 3                                      TRUE              TRUE  
 chemical 4           FALSE                      FALSE             FALSE 

Поскольку это большой набор данных, я пытаюсь создать код, в котором я могу сравнить assayX со всеми assayY. Я надеюсь создать цикл t-теста студента для первого набора данных и цикл хи-квадрат для второго набора данных. Ранее мне удавалось создавать код цикла для корреляционного анализа, поэтому я основывал свой код на этой идее.

x<- na.omit(mydata1[, c(assayX)])
y<- na.omit(mydata1[, c(assayY1:assayYend)])
lapply(y, function(x)t.test(y~x))

x<-na.omit(mydata2[, c(assayX)])
y<- na.omit(mydata2[, c(assayY1:assayYend)]
lapply(y, x=x, chisq.test)

Проблема с первым кодом: недопустимая переменная y

Проблема со вторым кодом: x и y должны иметь одинаковую длину.

Я немного поправил кое-где и получил разные типы ошибок, например, недостаточное количество «y» наблюдений и так далее. Я в основном использовал этот сайт, чтобы выяснить, как работает R, поэтому я надеюсь, что вы, ребята, найдете маленькое умное решение для новичка.


person ephackett    schedule 24.07.2014    source источник


Ответы (2)


После долгого времени и приобретения опыта в R я могу ответить на свой вопрос. Во-первых, сделать пустые места для изменения файла данных на NA.

df1 <- read.csv("data2.csv", header=T, na.strings=c("","NA"))

Потом для ученика.

df1.p= rep(NA, 418) 
 for (i in length(df1$Assays)){
test= t.test(df1[,c(i)]~df1$assay.activity)
current.p.val= test$p.value
p.df1[i]=current.p.val
 }

Затем добавить Pearson's или Chi sq (на самом деле не подходит для этого набора данных, но просто как пример)

df1.p.2= rep(NA, length(df1$Assays))
df1.r.2= rep(NA, length(df1$Assays))
 for (i in length(df1$Assays)){
   test2= cor.test(df1$assay.activity, df1[,c(i)], mehtod='pearson')
   current.p.val2= test2$p.value
   current.rval = test2$estimate
   df1.p.2[i] = current.p.val2
   df1.r.2[i] = current.rval
 }
df2= cbind(df1$Assays, df1.p, df1.p.2, df1.r.2)

Затем я отфильтровал его только для анализов со значимостью 0,1, но вопрос был не в этом. Если вы хотите знать это, просто задайте вопрос, и я отправлю туда ответ :)

person ephackett    schedule 03.12.2015

Я не думаю, что ваши данные передаются в тест правильно. t.test имеет аргументы, указывающие, являются ли данные парными или нет (по умолчанию - false), и как обрабатывать NA, если вы хотите изменить значение по умолчанию. Вероятно, вам следует использовать их, а не опускать NA заранее. Пример с НА в данных:

set.seed(1)
y <- runif(30, 0, 1)
y.NA <- c(3,24,27)
y[y.NA] <- NA
x <- runif(30, 0, 1)
x.NA <- c(1,3,8,12,21)
x[x.NA] <- NA
t.test(x,y)

Для chisq.test вы можете использовать табличную функцию. chisq.test (таблица (x, y)) $ p.value

person tom.purucker    schedule 24.07.2014
comment
Спасибо за ответ. Я получаю сообщение об ошибке для теста хи-квадрат, в котором говорится, что значения x и y должны быть одинаковой длины, а переменные длины также отличаются ошибкой для t-теста. Во всяком случае вокруг этого? - person ephackett; 25.07.2014
comment
Я думаю, проблема в том, как создается набор данных и как его направляют на проверку гипотез. Я обновлю тестовым набором данных. - person tom.purucker; 26.07.2014