Тест на статистическую разницу в пропорциях с использованием R

Я пытаюсь решить следующую проблему:

Человека можно отнести к группе A, группе B или группе C.

Я хочу знать, как атрибут1 (или атрибут2) влияет на долю наблюдений в этих группах. Обратите внимание, что атрибут1:атрибут2 имеет отношение 1:N. Атрибут1 имеет пять возможных значений, A,B,C,D,E, а атрибут2 имеет два возможных значения: A,B.

Смоделированные данные:

obsGroupA <- round(runif(40, 240, 63535))
obsGroupB <- round(runif(40, 2478, 95063))
obsGroupC <- round(runif(40, 3102, 104799))
propGroupA <- obsGroupA/(obsGroupA + obsGroupB + obsGroupC)
propGroupB <- obsGroupB/(obsGroupA + obsGroupB + obsGroupC)
propGroupC <- obsGroupC/(obsGroupA + obsGroupB + obsGroupC)
#propGroupA + propGroupB + propGroupC
attributeA <- c("A", "B", "C", "D", "E")[runif(40, 1, 5)]
attributeB <- ifelse(attributeA %in% c("A", "B", "E"), "A", "B")  

Попытка модели:

#y <- cbind(obsGroupA, obsGroupB, obsGroupC)
y <- cbind(propGroupA, propGroupB, propGroupC)
model <- glm(y ~ attributeA)

Я получаю следующую ошибку:

Ошибка в x[good, , drop = FALSE]: (нижний индекс) слишком длинный логический индекс

Любые идеи, как я могу выполнить статистический тест в R?
Любые ссылки на правильный статистический тест также будут оценены.

Спасибо.


person user1420372    schedule 05.03.2015    source источник
comment
Похоже, у вас есть две проблемы: 1) вы не знаете, что делаете со статистической точки зрения, и 2) вы не знаете, как заставить R делать то, что вы хотите. Вы получите помощь с i) по Cross Validated, но не обязательно ii) и вам нужно будет больше сфокусировать вопрос на том, какой статистический подход должен ли я использовать часть этого вопроса, чтобы он был по теме на Cross Validated.   -  person Gavin Simpson    schedule 05.03.2015
comment
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что он в первую очередь не о программировании. OP нуждается в статистической помощи, и это определит, что нужно сделать в программном обеспечении.   -  person Gavin Simpson    schedule 05.03.2015


Ответы (1)


Ну, вы должны сначала немного изучить регрессионный анализ, как было прокомментировано. У вас какие-то проблемы с пониманием. Но это то, что вы хотите:

obsGroupA <- round(runif(40, 240, 63535))
obsGroupB <- round(runif(40, 2478, 95063))
obsGroupC <- round(runif(40, 3102, 104799))
propGroupA <- obsGroupA/(obsGroupA + obsGroupB + obsGroupC)
propGroupB <- obsGroupB/(obsGroupA + obsGroupB + obsGroupC)
propGroupC <- obsGroupC/(obsGroupA + obsGroupB + obsGroupC)
#propGroupA + propGroupB + propGroupC
attributeA <- c("A", "B", "C", "D", "E")[runif(40, 1, 5)]
attributeB <- ifelse(attributeA %in% c("A", "B", "E"), "A", "B")

y <- data.frame(propGroupA, propGroupB, propGroupC,attributeA,attributeB)
model <- glm(propGroupA ~ attributeA ,data=y )
summary(model)
person Jason    schedule 05.03.2015
comment
Спасибо - этого пока хватит. Я не был уверен, что существует что-то вроде критерия хи-квадрат на случай непредвиденных обстоятельств. Я полагаю, как предполагает @Gavin Simpson, это была скорее статистическая проблема. Я думаю, что ошибка, которую я получил выше, была связана с тем, что у меня было 3 переменные в выражении y ‹- cbind(). Я могу изменить это на y ‹- cbind(propGroupA, 1-propGroupA). Поскольку это пропорции, я считаю, что в книге «Статистика: введение с использованием R» Майкла Дж. Кравели предлагается использовать family=binomial в операторе glm(). - person user1420372; 05.03.2015
comment
Однако это не бином... бином - это переменная 0/1. В этом случае у вас есть непрерывная переменная в качестве вашего «y», поэтому вы не хотите переходить на family = binomial. И вам не нужен хи-квадрат. И вам не нужно менять y на то, что вы предложили. Поверьте мне. У меня есть докторская степень по экономике, и я потратил слишком много времени на регрессионный анализ. Если вы хотите найти влияние пропорции A атрибутов A и B, его PropA = AttA + AttB. Если вам нужна опора B, это PropB = AttA + AttB. - person Jason; 05.03.2015