2017-04-18 57 views
1

我々はSPSS 23にSPSSマッチングケースコントロール1:nの

を使用して、当社の症例と対照をマッチさせたい我々はすでに1で年齢に私達の症例と対照と一致しました:以下のように3比と1ヶ月の許容範囲:私達は私達の例のために別の公差を使用したい

  1. DATASET ACTIVATE DataSet1. 
    FUZZY BY=Age SUPPLIERID=Databasenr NEWDEMANDERIDVARS=MatchID1 MatchID2 MatchID3 GROUP=Case FUZZ=1 
    EXACTPRIORITY=TRUE 
    MATCHGROUPVAR=Matchgroupvariable 
    /OPTIONS SAMPLEWITHREPLACEMENT=FALSE MINIMIZEMEMORY=FALSE SHUFFLE=TRUE. 
    

    は、我々は2つの質問を持って知っています。例えば、1歳未満の症例は、1ヵ月の寛容と1年以上の罹患症例とに、6ヶ月の耐性を合わせるべきである。どうすればそれをすることができますか?

  2. コントロールをケースに均等に配布したいと考えています。だから私たちには60の症例と300のコントロールがあります。すべてのケースに少なくとも1つ、可能な限り多くのコントロールがあるように、可能な限りすべてのケースにコントロールを持たせたいと思っています。

ありがとうございました。

答えて

0

単純な違いよりも複雑な毛羽を持たせるには、Pythonで書かれたcustomfuzz関数を使用して一致基準を計算する必要があります。私はこれのために以下の機能を示しました。これをPythonが見つけることができる場所にあるcustomfuzz.pyという名前のファイルに保存します。例えば、Statisticsインストールの下にあるpython \ lib \ site-packagesディレクトリです。

次に、FUZZではなくFUZZY構文でCUSTOMMATCH = 'customfuzz.custommatch'を使用します。

ここに関数があります。示されたくぼみは重要です。このコードでは、年数は年数(小数部分を含む)であると仮定しています。第二の問題については

custommatch(demander, supplier): 
    """calculate match for one variable and return 0 or 1 

    demander and supplier are assumed to be (lists) of ages in years""" 

    # check for missing values 
    if demander[0] is None or supplier[0] is None: 
     return 0 # no match 

    delta = abs(demander[0] - supplier[0]) # difference in years 
    if demander[0] < 1: # demander age lt 1 year 
     if delta <= .08333: # difference le 1 month 
      return 1 # ok match 
     else: 
      return 0 
    else: 
     if delta <= .5: # difference le half year 
      return 1 # ok match 
     else: 
      return 0 

、何をしなければならないだろうことは、実際に使用されたすべてのコントロールを削除し、コントロールの縮小データセットを使用してプロセスを繰り返し、最初の試合のラウンドです。

+0

ありがとうございます!出来た。 –