0

私はこのサイトや他のサイトで質問を実行してきましたが、これが正しく行われていることを理解していることを確認したいので、結果を分析するためのアドバイスが必要です。

am by nのバイナリ行列をJavaからRに(jriを使用して)エクスポートしてから、期待される0のベクトルに対してlm()を実行したいと思います。

行列をRに取り込むためのエクスポート関数は次のとおりです。

REXP x = re.eval("selectionArray <- c()");

for (int j = 0; j < currentSelection.length; j++){
    boolean result = re.assign("currentSNPs", currentSelection[j]);
        if (result == true){
             x = re.eval("selectionArray <- rbind(selectionArray, currentSNPs)");
        }
}

そこで、lm()関数を実行して、決定係数の2乗値を取得します。

            x = re.eval("fm = lm(selectionArray ~ 0)");

決定係数の値を取得するには、この時点でsummary(fm)を使用する必要があることはわかっていますが、それらを引き出す方法や、この時点での意味がわかりません。各列で期待される0値からの偏差の重要性を知りたい。

ありがとう!

4

2 に答える 2

2

'm'という名前の'lm'オブジェクトからR^2値を抽出します

summary(m)$r.squared

str()関数を使用すると、Rのオブジェクトの構造をいつでも表示できます。この状況ではあなたが望むstr(summary(m))

ただし、ここで何を達成しようとしているのかは明確ではありません。lm()指定した関数 の数式引数でselectionArray ~ 0、これは2つの理由で意味がありません。1)前に示唆したように、数式の右側の0は、予測変数がゼロのベクトルであるモデルに対応します。この予測子に対応するベータ係数は定義できません。2)結果のselectionArrayは行列です。私の知る限り、lm()複数の結果をもたらすように設定されていません。

selectionArrayの各列が0と異なることの有意性をテストしようとしていますか?その場合、少なくとも1つの成功(1)が含まれる列は、0列とは大幅に異なります。各列の成功確率の信頼区間に関心がある場合は、次のコードを使用してください。これは多重比較を調整しないことに注意してください。

まず、おもちゃの例から始めて、コンセプトを示しましょう

v1 <- rbinom(100,size=1,p=.25)  
#create a vector, length 100, 
#where each entry corresponds to the 
#result of a bernoulli trial with probability p

binom.test(sum(v1), n=length(v1), p = 0)
##let's pretend we didn't just generate v1 ourselves, 
##we can use binom.test to determine the 95% CI for p

#now in terms of what you want to do...
#here's a dataset that might be something like yours:
selectionArray <- sapply(runif(10), FUN=function(.p) rbinom(100,size=1,p=.p))
#I'm just generating 10 vectors from a binomial distribution 
#where each entry corresponds to 1 trial and each column 
#has a randomly generated p between 0 and 1

#using a for loop
#run a binomial test on each column, store the results in binom.test.results
binom.test.results <- list()
for(i in 1:ncol(selectionArray)){
    binom.test.results[[i]] <- binom.test(sum(selectionArray[,i]), 
        n=nrow(selectionArray), p=0)
}

#for loops are considered bad programming in r, so here's the "right" way to do it:
binom.test.results1 <- lapply(as.data.frame(selectionArray), function(.v){
    binom.test(sum(.v), n=nrow(selectionArray), p = 0)
})

#using str() on a single element of binom.test.result will help you 
#identify what results you'd like to extract from each test
于 2012-06-09T23:48:08.490 に答える
0

私はJavaについてあまり知らないので、それについては話していません。

それで、あなたは0と1の値の行列を持っていて、他の2進数はありませんか?

そして、列の平均が重要であるかどうかを知りたいと思います。0とは違う?

つまり、必ずしも回帰ではなく、仮説検定を行う必要があります。ただし、回帰はそのようなテストと同等である可能性があります。

lm(y~0)意味を成さない。インターセプトのみが必要な場合は、を使用する必要がありますlm(y~1)。ただし、これはt検定と同等であり、統計的に正しくありません。

fit<-glm(y~1,family=binomial)p値を抽出するよりも使用する方が良いとp<-summary(fit)$coef[4]思いますが、私は統計家ではありません。

于 2012-06-07T12:29:23.673 に答える