Я хотел бы создать цикл для тестирования биномиального отрицательного распределения вероятностей, но он не работает.В моем примере:
Создание искусственного набора данных с 2 переменными - Feature и Resp (переменная ответа)
#Package
library(MASS)
Features<-sort(rep(1:3,30))
Resp1<-rnbinom(60,0.75,0.10) ##60 Negative binomial values
Resp2<-rpois(30,10)## 30 Poisson values
Resp<-c(Resp1,Resp2)
d<-as.data.frame(cbind(Features,Resp))
Применение биномиального отрицательного теста на основе хи-квадрат
uniq <- unique(unlist(d$Features))
res<-NULL
for (i in 1:length(uniq)){
data_1 <- subset(d, Features == uniq[i])
k <- fitdistr(data_1$Resp,"negative binomial") #Extraction of probability parameters (size and mu)
par <- k$estimate
size <- par[1]#k parameter
mu <- par[2]#Mean
N <- length(data_1$Resp)
est <-N*dnbinom(data_1$Resp,size=size,mu=mu) ## Estimation of values
fecdf <- ecdf(data_1$Resp) ###ecdf- Cumulative empirical distribution
knotsX <- knots(fecdf)
emp <- fecdf(c(knotsX,Inf)) # Empirical distribution
testChi<-chisq.test(table(emp),table(est),correct=TRUE) #Chi square test empirical vs estimated values
result<-ifelse(testChi$p.value>0.05,"Binomial Negative","Other distribution")
res<-rbind(res,c(uniq[i],result))
colnames(res)<-c("Features","Distribution")
}
res
Features Distribution
[1,] "1" "Binomial Negative"
[2,] "2" "Other distribution"
[3,] "3" "Binomial Negative"
Не работает, потому что мои первые 60 чисел имеют биномиальное отрицание (функции 1 и 2), а последние 30 (функция 3) имеют распределение Пуассона (я имитирую эти значения при создании искусственного набора данных).Где проблема с моим скриптом?Заранее спасибо!