0

2,130 の観測値を含むデータ フレームがあります。この形式では、脳卒中患者 130 人、心臓発作 (MI) 患者 2,000 人です。

Index   Age     Sex Stroke  MI
1       42      M   FALSE   TRUE
2       76      M   FALSE   TRUE
3       55      F   FALSE   TRUE
4       80      M   TRUE    FALSE
5       68      F   FALSE   TRUE

str(Match)

'data.frame':   2130 obs. of  5 variables:

 $ Index : int  1 2 3 4 5 6 7 8 9 10 ...  
 $ Gender: Factor w/ 2 levels "F","M": 2 1 1 1 2 1 1 2 2 1 ...  
 $ Age   : num  45.8 44.1 67.7 37.4 46.7 72 21.4 50.8 35.8 47.2 ...  
 $ Stroke: logi  TRUE TRUE TRUE TRUE TRUE TRUE ...  
 $ MI    : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...  

Stroke=TRUE [テスト行] の行ごとに、MI=TRUE [一致した行] の行が 1 つ必要です。

次の 2 つの条件を満たす必要があります。

Sex in [matched row] = Sex in [test row]
Age in [matched row] equal to or within +/- 3 years of Age in [test row]

行が一致するように選択されると、その行を 2 回目に使用することはできません。130 のストロークが一致するため、出力には 130 の心臓発作が含まれているはずです。選択するのに十分な心臓発作があります。万一130個見つからない場合は、できるだけ多く一致させてください。

私は R を学び始めたばかりです (そしてプログラミングのバックグラウンドはありません)。私の試みは、'which' と 'subset' を含む行を見つけることに限定されていました。たとえば、すべての男性の脳卒中患者です! どこから始めるべきかについてのガイダンスはありますか?年齢と性別の一致は医学研究では一般的であり、他の人は何らかの助けから恩恵を受けます.

4

2 に答える 2

3

どの値も許容可能な一致がないため、データはテストに適していません。これは、分析段階ではなく、適切なコントロールを選択する必要がある設計段階にある場合にのみ提供しています。これは、登録に関連する追加費用が発生するためです。

 str(dfrm4)
'data.frame':   15 obs. of  5 variables:
 $ Index : int  1 2 3 4 5
 $ Age   : int  42 76 55 80 68
 $ Sex   : Factor w/ 2 levels "F","M": 2 2 1 2 1
 $ Stroke: logi  FALSE FALSE FALSE TRUE FALSE
 $ MI    : logi  TRUE TRUE TRUE FALSE TRUE
#----------------

  apply(dfrm4[ dfrm4$Stroke, ] , 1, function(m) {
      possm <- dfrm4[!dfrm4$Stroke & 
                     as.character(dfrm4$Sex)==m['Sex'] & 
                     as.character(dfrm4$Index) != m['Index'] &
                     dfrm4$Age >= as.numeric(m['Age']) -3 & 
                     dfrm4$Age <= as.numeric(m['Age']) +3, ];  
       N <- NROW(possm)
       return(possm[ sample(1:N, 1), ] ) })

# --------------
$`4`
[1] Index  Age    Sex    Stroke MI    
<0 rows> (or 0-length row.names)

その結果は、R data.frame に変換できます。do.call(rbind,res))

脳卒中は 1 回のみで、3 歳以内の試合はありません。利用可能ないくつかの一致を使用してより大きなサンプルでテストしましたが、成功しました....しかし、方法論のアドバイスに注意し、これが分析段階にある場合は一致を避けてください. マッチングを不必要に使用すると、貴重なデータが無駄になり、多くの場合、統計上の不正行為になります。医学の進歩がこれに依存する可能性がある場合は、経験豊富な統計相談を受けるのが最善でしょう.

于 2013-07-24T23:59:29.687 に答える