2012-03-20 9 views
5

にプロットするRの関数glm()を使用してフィッティングされたパラメータ推定値のプロファイル偏差をプロットすることができます。プロファイルDevianceは、パラメータ推定値のさまざまな値に対する偏差関数です他のすべてのパラメータを推定した後に、私は、2次の偏差関数の仮定をチェックするために、適合パラメータの周りのいくつかの値の偏差をプロットする必要があります。GLMフィットのプロファイル偏差をR

私のモデルは犯罪者の再確認を予測しています。式は reconv ~ [other variables] + sexの形式であり、reconvはバイナリのyes/noファクタであり、sexはバイナリの男性/女性係数です。私は、性別=女性(性別=男性は参照レベル)について推定されたパラメータのプロファイル偏差をプロットしたいと思う。

glm()関数は、パラメータを-0.22と見積もり、stdエラー0.12を返しました。

[私が見つけることができる答えがなかったのでこの質問をしていますが、私はそれを試してみて、他の人に使いたい解決策を投稿したかったのです。もちろん、追加のヘルプは大歓迎です。 :-)]

答えて

6

Ioannis KosmidisによってprofileModel packageを参照してください。彼はパッケージを説明しているRジャーナル(R Newsに掲載されている)の論文を持っていた。

Ioannis Kosmidis。 profilemodel Rパッケージ:線形予測子を持つモデルの目的をプロファイリングする。 R News、8(2):12-18、October 2008.

PDFはhere(ニュースレター全体)です。

+0

ありがとうございました。それはまさに私が探していたもののように見えます。私は人々がとても素早く返信することを理解していませんでした。私の答えはちょっとしたコードでしたが、少し冗長になってしまいました。 -/ – MatW

+2

いいえ、投稿してください---いろいろなやり方の例が、将来的に疑いのないユーザーに役立つかもしれません。 –

+0

私は、私の評判が十分に高くないので、7時間は投稿できないことを発見しました。私は後でそれを掲示するでしょう。ご協力いただきありがとうございます。 – MatW

5

MASSパッケージに?profile.glm(およびexample("profile.glm"))を参照してください - 私はそれはあなたが(これはデフォルトではロードされませんしたい全力を尽くすだろうと思うが、それは?profileに記載されている、最初の場所だった可能性がありますあなたは見ました...)(プロファイルは一般に符号付き平方根スケールでプロットされるので、真の二次プロファイルは直線として現れます)

+0

ありがとうございました。私はそれを試してみましたが、プロットが私に言っていることを正確に理解していませんでした。なぜなら私は直線ではなく逆二次形状を期待していたからです。それは今より感謝します - ありがとう。 – MatW

+0

OK、十分です。将来、これらの詳細をあなたの質問に追加することが賢明でしょう(例えば、「profile.glmが見つかりましたが、私の質問に合理的な回答を与えていないようです」)。 –

+0

+1これは 'profile.glm()' @BenBolkerに有益なコメントです。先週、これのようなものがどこかで切り取られ(CV?)、私は 'profile.glm()'と一緒に過ごした後、その日の仕事に戻りました。私は "signed-square-root"ビットを見逃しました。 –

0

これを行う方法は、offset()関数を使用することです(Pawitan、Y.(2001)「In All Likelihood」p172で詳述)。 @BenBolkerと@GavinSimpsonの回答は、これ以上のことをするパッケージを参照している点で、これより優れています。 私はこれを転記しています。なぜなら、別の方法でそれを丸めているからです。それは私に多くを教えた。

sexi <- as.numeric(data.frame$sex)-1  #recode a factor as 0/1 numeric 

beta <- numeric(60)    #Set up vector to Store the betas 
deviance <- numeric(60)   #Set up vector to Store the deviances 

for (i in 1:60){ 

    beta[i] <- 0.5 - (0.01*i) 
    #A vector of values either side of the fitted MLE (in this case -0.22) 

    mod <- update(model, 
        .~. - sex    #Get rid of the fitted variable 
        + offset( I(sexi*beta[i]) ) #Replace with offset term. 
       ) 
    deviance[i] <- mod$deviance      #Store i'th deviance 
} 

best <- which.min(deviance)     
#Find the index of best deviance. Should be the fitted value from the model 

deviance0 <- deviance - deviance[best]   
#Scale deviance to zero by subtracting best deviance 

betahat <- beta[best] #Store best beta. Should be the fitted value. 
stderror <- 0.12187  #Store the std error of sex, found in summary(model) 

quadratic <- ((beta-betahat)^2)*(1/(stderror^2)) 
#Quadratic reference function to check quadratic assumption against 

x11()          
plot(beta,deviance0,type="l",xlab="Beta(sex)",ylim=c(0,4))  
lines(beta,quadratic,lty=2,col=3)   #Add quadratic reference line 
abline(3.84,0,lty=3)    #Add line at Deviance = 3.84 
関連する問題