3

パッケージBSDAの SIGN.test 関数から p 値を抽出する必要があります。

> library(BSDA)
> x <- c(7.8, 6.6, 6.5, 7.4, 7.3, 7., 6.4, 7.1, 6.7, 7.6, 6.8)
> t1=SIGN.test(x,md=6.5)

        One-sample Sign-Test

data:  x
s = 9, p-value = 0.02148
alternative hypothesis: true median is not equal to 6.5
95 percent confidence interval:
 6.571273 7.457455
sample estimates:
median of x 
          7     

しかし、次のエラーが発生します。

> t1$p.value
Error in t1$p.value : $ operator is invalid for atomic vectors

私もダメダメstr(t1)でやってみました。

> str(t1)
 num [1:3, 1:3] 0.935 0.95 0.988 6.6 6.571 ...
 - attr(*, "dimnames")=List of 2
  ..$ : chr [1:3] "Lower Achieved CI" "Interpolated CI" "Upper Achieved CI"
  ..$ : chr [1:3] "Conf.Level" "L.E.pt" "U.E.pt"
4

2 に答える 2

4

関数のコードを調べたところ、関数内で定義されている特定の基準 ( k<1) が満たされない限り、出力に含まれないようです。kそれは、ドキュメントがそうすべきだと言っていることではありません。あなたのオプションはおそらく、関数の変更されたバージョンを自分のワークスペースに置くことです。あなたがする必要があるのは、最後の2行を置き換えることです

print(rval)
return(Confidence.Intervals)

だけで

 return(rval)

取得していた信頼区間は取得されませんが、必要に応じて、それらを出力リストに追加することもできます。

rval$Confidence.Intervals <- Confidence.Intervals
return(rval)

パッケージのメンテナーに連絡することも価値があるかもしれませんが、2012 年 3 月以降は更新されていないようです。

于 2013-10-28T20:55:14.077 に答える
1

私は同じ問題に直面し、1 人の優秀な R プログラマーがコードを修正して p 値を抽出しました。

これを行うだけです。あなたの問題は解決されます。

1) SIGN.test だけを書いた行を送信すると、関数が表示され、それをコピーし、好きな名前を付けてから、ステップ 2 のテキストをコピーし、それらを関数の最終行に置き換えます...

2)

print(rval)
list(rval,Confidence.Intervals)
}
}

3)最後の行は

   print(rval)
         return(Confidence.Intervals)
    }
}
<environment: namespace:BSDA>

手順 2 の行に置き換えます。

4)関数に my という名前を付け、関数の結果を res に格納すると、これを書くことで p 値が抽出されます。

入力

res<-my(x,md=6.5)

出力

res[[1]]$p.value [1] 0.02148438; x はベクトルです

参照:- https://www.facebook.com/groups/ruse​​rs/10152075287578740/

于 2014-03-17T04:29:01.743 に答える