2015-03-05 2 views
0

Я пытаюсь решить следующую проблему:Тест для статистической разницы в пропорции с помощью R

Человек может быть классифицирована как либо GroupA, GroupB или GroupC.

Я хочу знать, как атрибут1 (или атрибут2) влияет на долю наблюдений в этих группах. Обратите внимание, что атрибут1: attribute2 имеет отношение 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) 

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

Error in x[good, , drop = FALSE] : (subscript) logical subscript too long

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

Спасибо.

+0

У вас, кажется, две проблемы: i) вы не знаете, что вы делаете со статистической точки зрения, и ii) вы не знаете, как получить R, чтобы делать то, что вы хотите. Вы получите помощь с i) на [stats.se], но не обязательно ii), и вам нужно будет больше сосредоточиться на вопросе о том, какой статистический подход я должен использовать для этого вопроса, чтобы это было по теме на [stats .se]. –

+0

Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что речь идет не о программировании в первом случае. OP нуждается в статистической помощи, и это определит, что нужно делать в программном обеспечении. –

ответ

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) 
+0

Спасибо, что покажут. Я не был уверен, было ли что-то вроде хи-квадратного теста на случай непредвиденных обстоятельств. Я полагаю, что, как предлагает @Gavin Simpson, это было скорее статистической проблемой. Я думаю, что ошибка, которую я получил выше, состояла в том, что у меня было 3 переменных в выражении y <- cbind(). Я могу изменить это на y <- cbind (propGroupA, 1-propGroupA). Поскольку это пропорции, я считаю, что статистика: введение, использующее R, в книге Майкла Дж. Кровели предлагает использовать family = binomial в заявлении glm(). – user1420372

+0

Это не бином, хотя ... биномальная переменная 0/1. В этом случае у вас есть непрерывная переменная как ваш «y», поэтому вы не хотите менять «family = binomial». И вам не нужен хи-квадрат. И вам не нужно менять y на то, что вы предложили. Доверьтесь мне. У меня есть кандидат экономических наук, и я потратил слишком много времени на регрессионный анализ. Если вы хотите найти эффект доли A атрибутов A & B, его PropA = AttA + AttB. Если вы хотите, чтобы prop B был PropB = AttA + AttB – Jason

Смежные вопросы