2017-01-02 6 views
1

私は実験データの信頼性をチェックするために同じ条件(いくつかの条件)の反復測定値からなる実験データに対して線形回帰を実行しようとしています。R-リニアモデルが実験データと一致しません

[1] cond1 repA cond1 repB cond2 repA cond2 repB ... 
[2] 4.158660e+06 4454400.703 ... 
[3] 1.458585e+06 4454400.703 ... 
[4] NA   887776.392 ... 
... 
[5024] 9571785.382 9.679092e+06 ... 

Iは、異なる条件のために(rdataに格納されている)散布+ LM + R^2つの値をプロットするために、次のコードを使用します:

を各条件について私は、データフレーム dfに格納され〜5K-10K観察有します

enter image description here

:それは私が実験データで見る傾向に適合しないように、しかし
for (i in seq(1,13,2)){ 
    vec <- matrix(0, nrow = nrow(df), ncol = 2) 
    vec[,1] <- df[,i] 
    vec[,2] <- df[,i+1] 
    vec <- na.exclude(vec) 
    plot(log10(vec[,1]),log10(vec[,2]), xlab = 'rep A', ylab = 'rep B' ,col="#00000033") 
    abline(fit<-lm(log10(vec[,2])~log10(vec[,1])), col='red') 
    legend("topleft",bty="n",legend=paste("R2 is",rdata[1,((i+1)/2)] <- format(summary(fit)$adj.r.squared,digits=4))) 
} 

は、LMがシフトしているようです

すべての条件で一貫して発生します。私は、scourceコードを探し、さまざまなフォーラムや投稿(thisまたはhere)を参照して説明を見つけることに失敗しました。

+0

ようこそStackOverflow! [再現可能な例](http://stackoverflow.com/questions/5963269)を与える方法に関する情報をお読みください。これは他の人があなたを助けることをはるかに容易にします。 – Axeman

+4

また、なぜあなたは結果が間違っていると思いますか?回帰直線が右上隅のデータに正確にないという唯一の問題ですか? – Axeman

+1

'' lm'適合とローカル線形回帰(例えば '' loess')の適合度を比較して、何が起こっているのかをよりよく把握できます。私の疑念は、より低い「A」の(ローカル)線形フィットは、より高い「A」よりも勾配が著しく浅く、右上の点を通らない全体的なフィットを説明することである。 – Thales

答えて

2

コメントしたり質問したりすることはできますが、できません。

私が理解しているところでは、repAとrepBの両方がエラーで測定されます。したがって、Yの誤差だけを考慮に入れた一般的な最小二乗法を使ってデータに適合させることはできません(重み付けされたOLSが機能するかもしれないと主張するかもしれませんが、議論するには熟練していません)。あなたの質問はthis oneにリンクされているようです。

あなたが使用できるのは、XとYの誤差を考慮した最小2乗法です。以下の例では、XとYに同じエラーがあると仮定して「通常の」TLSを使用しました(したがって、error.ratio=1)。そうでない場合は、error.ratio=var(y1)/var(x1)と入力してエラー率を指定することができます(少なくともvar(Y)/ var(X)だと思います)。

library(mcr) 
MCR_reg=mcreg(x1,y1,method.reg="Deming",error.ratio=1,method.ci="analytical") 
MCR_intercept=getCoefficients(MCR_reg)[1,1] 
MCR_slope=getCoefficients(MCR_reg)[2,1] 

# CI for predicted values 
x_to_predict=seq(0,35) 
predicted_values=MCResultAnalytical.calcResponse(MCR_reg,x_to_predict,alpha=0.05) 
CI_low=predicted_values[,4] 
CI_up=predicted_values[,5] 

デミング/ TLSの回帰では、あなたのx軸とyの誤差がhereが説明したように、正規分布に従うことになっている、ということに注意してください。そうでない場合は、Passing-Bablok回帰(Rコードはhere)に進みます。

また、R2はデブリングまたはパスブロク回帰については定義されていません(here参照)。相関係数は良いプロキシですが、正確に同じ情報を提供するわけではありません。あなたが2つの要因の間の線形相関を研究しているので、ピアソンのプロダクトモーメント相関係数を見てください。 rcorr機能

+1

回帰減衰/希釈も参照してください。 https://en.wikipedia.org/wiki/Regression_dilution – Thales

関連する問題