2017-07-13 3 views
0

IsoplotRパッケージのyorkfit()関数を使用して、2つの変数の回帰較正を実行しようとしています。このモデルからブートストラップされた勾配係数の信頼区間を推定したいと思います。しかし、以下の典型的なブートストラップ方法を使用する代わりに、一度に75%のデータ(無作為に選択されたもの)に対してのみ反復を実行したいと思います。データのランダムサブセットからのブートストラップ回帰係数

library(boot) 
library(IsoplotR) 

X <- c(9.105,8.987,8.974,8.994,8.996,8.966,9.035,9.215,9.239, 
     9.307,9.227,9.17, 9.102) 
Y <- c(28.1,28.9,29.6,29.5,29.0,28.8,28.5,27.3,27.1,26.5, 
     27.0,27.5,28.4) 
n <- length(X) 
sX <- X*0.02 
sY <- Y*0.05 
rXY <- rep(0.8,n) 
dat <- cbind(X,sX,Y,sY,rXY) 
fit <- york(dat) 

boot.test <- function(data,indices){ 
    sample = data[indices,] 
    mod = york(sample) 
    return (mod$b) 
} 

result <- boot(data=dat, statistic = boot.test, R=1000) 
boot.ci(result, type = 'bca') 

...しかし、私はどこここから行くには本当にわからない:これまでのところ、次のサンプルデータを使用して、私はyorkfit()関数の傾き係数結果をブートストラップするために管理しました。私を正しい方向に動かす助けがあれば、大変感謝しています。私はRに新しいので、質問があいまいな場合はお詫び申し上げます。ありがとう。

答えて

0

package documentationに基づいて、カスタム関数を使用してサンプルするには、sim = "parametric"でran.gen引数を使用できる必要があります。この場合、サンプルは無作為に選択された全観測値の特定の割合です。以下のようなものは、あなたが望むものを達成するはずです。

result <- boot(
    data=dat, 
    statistic =boot.test, 
    R=1000, 
    sim="parametric", 
    ran.gen=function(data, percent){ 
     n=nrow(data) 
     indic=runif(n) 
     data[rank(indic, ties.method="random")<=round(n*percent,0),] 
    }, 
    percent=0.75) 
関連する問題