使用bbmle包(R)中的函数mle2()获取指数分布和幂律分布的参数
以下是mydata的一部分: 原始数据非常大,所以我上传了20行的一部分数据使用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
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)