Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用bbmle包(R)中的函数mle2()获取指数分布和幂律分布的参数_R_Exponential_Mle_Power Law - Fatal编程技术网

使用bbmle包(R)中的函数mle2()获取指数分布和幂律分布的参数

使用bbmle包(R)中的函数mle2()获取指数分布和幂律分布的参数,r,exponential,mle,power-law,R,Exponential,Mle,Power Law,以下是mydata的一部分: 原始数据非常大,所以我上传了20行的一部分数据 x <- [7.6,2.2,1.1,4.7,8.6,7.5,7.5,29.9,5.0,3.0,2.4,1.5,14.9,3.9,3.7,3.2,5.0,1.7,2.9,2.3] 这些功能正确吗? 使用mle2()获取参数: #get the parameter u of power law s1 <- mle2(pl,start = list(u=2),data = list(x)) summary(s1

以下是mydata的一部分:

原始数据非常大,所以我上传了20行的一部分数据

x <- [7.6,2.2,1.1,4.7,8.6,7.5,7.5,29.9,5.0,3.0,2.4,1.5,14.9,3.9,3.7,3.2,5.0,1.7,2.9,2.3]
这些功能正确吗? 使用mle2()获取参数:

#get the parameter u of power law
s1 <- mle2(pl,start = list(u=2),data = list(x))
summary(s1)
#get the parameter lamda of exponential distribution
s2 <- mle2(ex,start = list(β=2),data = list(x))
summary(s2)
#获取幂律的参数u

s1与您可能期望的差不多。您还没有指定数据的条件分布,所以我将假设为正态分布。(考虑到这一点,您也可以使用
nls()
——最小二乘法是正态、同方差响应的最大似然估计),尽管
mle2
提供了更多使用优化器等的空间。)

我将使用公式界面,如果你的模型不太复杂的话,这很方便

幂律 指数型 。。。其中,
start
中的元素是任何合理的起始值。鉴于您的上述数据,这些方法应该在数据的子集上合理地工作。然而,它们在1000万次观测中可能表现不佳。我会考虑使用< /P>
glm(y~x,family=gaussian(link="log"),data=mydata)
拟合指数曲线和

glm(y~log(x),family=gaussian(link="log"),data=mydata)

拟合幂律曲线。

x=[0.8,0.9,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9]x=[0.8,0.9,1,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9],我的数据是这样的,但我的数据长度是1000万。还有一个问题,A、mu和logsd可以是我在开始列表中输入的任何数字?你可能认为mydata是data.frame,有两列,分别命名为x和y?你能编辑你的问题以包含这些信息吗?很抱歉我对mydata的描述不好,我在问题描述中上载了部分mydata,请再看一看,谢谢!
  mle2(y~dnorm(mean=B*exp(-beta*x),sd=exp(logsd),
     start=list(B=...,beta=...,logsd=...),
     data=mydata)  
glm(y~x,family=gaussian(link="log"),data=mydata)
glm(y~log(x),family=gaussian(link="log"),data=mydata)