Rに関数を書く方法を学びたいと思います。テーブルの使用方法と "レベル変数"の扱いについては、非常に具体的な質問があります。テーブル頻度数値カテゴリ操作関数
私の元の問題は、累積ハザード関数を書くことです。
例:8つの観察はF(14)のために以下の動作を行うベクターから8の観察/回
を有するデータ
x= c(1,1,2,2,2,3,14,25)
= 2/8 + 3/6 +私の機能は、基本的にこれを行いますF(2)= 2/8 + 3/6の場合、1/3 + 1/2 となる。基本的には、(いくつの観測値に時間iがあるか)/(何度観測値がi以上であるか) i = 2の場合、2/8 )+ 3 /(6)となる。時間iが2以上の観測が6回あるからである。
具体的には、機能table
を使用していました。しかし、この関数は私に周波数を与え、周波数に関連する値を数値ではなくレベルとして扱います。
:1,2,3,14,15のが、私のような操作を実行しようとする場合:
v<-c(1,2,3,14,15)
ta<-as.data.frame(table(v))
as.numeric(ta$v)<14
[1] TRUE TRUE TRUE TRUE TRUE
をしかし、私は結果がTRUE TRUE TRUE FALSE FALSEになりたいです。私はtable()の変数を数値として扱いたい。 どうすればいいですか?
私がやっていることを見るために、私の余分なコードは以下の通りです。それは検閲なしではうまくいくが、この部分は検閲を進めるための鍵である。ここ
cumh<-function (x,t,y=rep(1,length(x))){
le<-length(x)
#Sum comparison of terms
isum<-sum(x<=t)
#Collapse table
ta<-as.data.frame((table(x)))
ta$cum<-cumsum(ta$Freq)
ta$den<-le
for (j in 1:(nrow(ta)-1)) {
ta$den[j+1]<-le-ta$cum[j]
}
ind<-isum>=ta$cum
#correction for right censor:
ta2<-as.data.frame(table(y*x))
cumhaz<-sum(ind*ta2$Freq/ta$den)
return(cumhaz)}