ks.test中的错误来自累积分布函数未正确编写,因为离散分布没有R中的buit -in函数

问题描述

我有这些离散数据,我想做一次样本kolmogorov smirnov测试,但是当我运行以下代码时,它给我一个错误

 d <- c(5,11,21,31,46,75,98,122,145,165,196,224,245,293,321,330,350,420)

 #log likelihood function for the discrete distribution
 #*********************************************************

loglik <-function(param){   

  q <- param[1]
  if(q<=0){return(NaN)}
  b <- param[2]
  if(b<=0){return(NaN)}
  c <- param[3]
  if(c<=0){return(NaN)}
  sum(log((q^(sqrt(d)*(1+b*c^d)))-(q^(sqrt(d+1)*(1+b*c^(d+1)))))) 
}

# maximum likelihood estimation using maxLik function
#*****************************************************
library(maxLik)
mle <- maxLik(loglik,start=c(q=0.9658,b=0.1237,c=1.0086),control=list(printLevel=2)) 


# the cumulative distribution function of the discrete distribution
#******************************************************************* 

cdf <- function(param){    
 if(q<=0){return(NaN)}
  b <- param[2]
  if(b<=0){return(NaN)}
  c <- param[3]
  if(c<=0){return(NaN)}
   
 cdf= 1-q^(sqrt(d)(1+b*c^d))
}
#one-sample kolmogorov smirnov test
#**********************************

ks<- ks.test(d,cdf,q=coef(mle)[1],b=coef(mle)[2],c= coef(mle)[3] ) 

错误:

Error in y(sort(x),...) : 
  unused arguments (q = coef(mle)[1],b = coef(mle)[2],c = coef(mle)[3])

当我尝试测试cdf功能时,

cdf(q=2,b=3,c=3)

R给我以下错误

Error in cdf(q = 2,b = 3,c = 3) : 
  unused arguments (q = 2,c = 3)

我认为ks.test中的错误来自错误的累积分布函数。

解决方法

问题中的代码有几个错误,包括向map.get("key").removeIf(s -> s.equals("value")); map.get("key").removeIf(s -> s.equals("value") || s.equals("value1")); 传递错误数量的参数。

cdf

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...