2017-09-11 7 views
0

私はRを初めて使うので、打ち切りデータの相関を見つけるために生存分析を使用しようとしています。 xデータはプロトスターのエンベロープ質量です。 yデータは観測された分子線の強度であり、いくつかの値は上限である。データは次のとおりです。私はデータをプロットしてたときに、しかしRサバイバルサプレグは良いフィットをもたらしていません

summary(modeldata) 

Call: 
survreg(formula = Surv(y, censor) ~ x, dist = "exponential", 
control = list(maxiter = 90)) 
Value Std. Error  z  p 
(Intercept) -0.114  0.568 -0.20 0.841 
x   0.153  0.110 1.39 0.163 

Scale fixed at 1 

Exponential distribution 
Loglik(model)= -6.9 Loglik(intercept only)= -9 
Chisq= 4.21 on 1 degrees of freedom, p= 0.04 
Number of Newton-Raphson Iterations: 5 
n= 11 

x <- c(17.299, 4.309, 7.368, 29.382, 1.407, 3.404, 0.450, 0.815, 1.027, 0.549, 0.018) 
y <- c(2.37, 0.91, 1.70, 1.97, 0.60, 1.45, 0.25, 0.16, 0.36, 0.88, 0.42) 
censor <- c(0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1) 

は、私は次のような結果を与えるRサバイバルライブラリ

modeldata<-survreg(formula=Surv(y,censor)~x, dist="exponential", control = list(maxiter=90)) 

から関数survregを使用しています次の方法を用いたモデル:

plot(x,y,pch=(censor+1)) 
xnew<-seq(0,30) 
model<-predict(modeldata,list(x=xnew)) 
lines(xnew,model,col="red") 

私はこれを得るplot of x and y data; triangles are censored data

私は間違ってどこに行くのか分からない。私はさまざまなディストリビューションを試みましたが、すべて同じような結果をもたらします。

x <- c(1.14, 1.14, 1.19, 0.78, 0.43, 0.24, 0.19, 0.16, 0.17, 0.66, 0.40) 

結果が正しく解釈されているかどうかもよく分かりませんが、他のデータを使用すると同じことが言えます。

同じ方法(例:https://stats.idre.ucla.edu/r/examples/asa/r-applied-survival-analysis-ch-1/)を使用して他の例を試してみましたが、これまでのところわかります。

だから私の質問は以下のとおりです。

  1. 私は、データを当てはめるための正しい機能を使用していますか?そうでない場合は、どちらが適していますか?

  2. 正しい関数であれば、モデルがデータに近似しない​​のはなぜですか?それはプロットと関係がありますか?

ありがとうございました。関係の「形状」は下向き凹型に見えるので、私は~ log(x)フィットを推測しているだろう

+0

データが切り捨てられていると言うより正確だと思います。そして、分布は指数関数的ではなく対数的に見えます。 –

答えて

0

より適切でされることがあります。

dfrm <- data.frame(x = c(17.299, 4.309, 7.368, 29.382, 1.407, 3.404, 0.450, 0.815, 1.027, 0.549, 0.018), 
y = c(2.37, 0.91, 1.70, 1.97, 0.60, 1.45, 0.25, 0.16, 0.36, 0.88, 0.42), 
censor= c(0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1)) 

modeldata<-survreg(formula=Surv(y,censor)~log(x), data=dfrm, dist="loggaussian", control = list(maxiter=90)) 

あなたのコードに適切なように見えた:

png(); plot(y~x,pch=(censor+1),data=dfrm) 
xnew<-seq(0,30) 
model<-predict(modeldata,list(x=xnew)) 
lines(xnew,model,col="red"); dev.off() 

enter image description here

modeldata 
Call: 
survreg(formula = Surv(y, censor) ~ log(x), data = dfrm, dist = "loggaussian", 
    control = list(maxiter = 90)) 

Coefficients: 
(Intercept)  log(x) 
0.02092589 0.32536509 

Scale= 0.7861798 

Loglik(model)= -6.6 Loglik(intercept only)= -8.8 
    Chisq= 4.31 on 1 degrees of freedom, p= 0.038 
n= 11 
+0

返事をありがとう、それは働いた。私は、式= Surv(y、censor)〜xが式= Surv(y、censor)〜log(x)よりもうまく働いていることに気付きました。どちらの場合でも、あなたの答えは私の問題を解決しました。 – dragon

関連する問題