-1

これが 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]

機能説明はこちら

  1. べき法則:y=A*x^-(u)
  2. 指数:y=B*exp^(-βx)

今、MLE(最尤法)を使用しuてべき乗法とβ指数分布を取得したいと考えています。

#set likelihood function of power law
pl <- function(u){-n*log(u-1)-n*(u-1)*log(min(x))+u*sum(log(x))}

#set likelihood function of exponential distribution
ex <- function(β){-n*log(β)+β*sum(x)}

これらの機能は正しいですか?

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)

ここで 2 つの質問があります。

  1. モデルに適合するのに最適なものを決定する方法

    confint() を使用すると 95% CI を取得できますが、両方のモデルの Rsquared と AIC(Akaike weights) を取得するにはどうすればよいですか?

  2. データに適合するのに最適なものを取得した後、生データの上に適合グラフを描画するにはどうすればよいですか?

Windows 7 で R.3.2.2 を使用しています。

4

1 に答える 1

0

あなたが期待するかもしれないほとんど。データの条件付き分布を指定していないため、正規性を仮定します。(これを考えると、使用することもできますnls()-- 最小二乗法、通常の等分散応答の最尤推定です)。ただしmle2、オプティマイザーなどで遊ぶためのもう少しの範囲が提供されます。)

モデルがそれほど複雑でない場合に便利な数式インターフェイスを使用します。

べき法則

mle2(y~dnorm(mean=A*x^(-mu),sd=exp(logsd),
     start=list(A=...,mu=...,logsd=...),
     ## no need for list() if mydata is already data.frame
     data=mydata)   

指数関数的

  mle2(y~dnorm(mean=B*exp(-beta*x),sd=exp(logsd),
     start=list(B=...,beta=...,logsd=...),
     data=mydata)  

... の要素はstart妥当開始値です。上記のデータを考えると、これらのアプローチはデータのサブセットに対して合理的に機能するはずです。ただし、1,000 万回の観測ではうまく機能しない可能性があります。私は使用を検討します

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

指数曲線にフィットし、

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

べき乗曲線に適合します。

于 2015-12-02T02:48:32.773 に答える