1

この質問は少し奇妙に聞こえるかもしれません。R の R 二乗値を 1:1 ラインと比較して報告する方法を知りたいです。たとえば、観測値とモデル化された値を比較したいとします。理想的なケースでは、原点を 45 度の角度で通過する直線である必要があります。

たとえば、https://www.dropbox.com/s/71u2vsgt7p9k5cl/correlationcsvにあるデータがあります。

私が書いたコードは次のとおりです。

> corsen<- read.table("Sensitivity Runs/correlationcsv",sep=",",header=T)
> linsensitivity <- lm(data=corsen,sensitivity~0+observed)
> summary(linsensitivity)

Call:
lm(formula = sensitivity ~ 0 + observed, data = corsen)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.37615 -0.03376  0.00515  0.04155  0.27213 

Coefficients:
         Estimate Std. Error t value Pr(>|t|)    
observed 0.833660   0.001849   450.8   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.05882 on 2988 degrees of freedom
Multiple R-squared: 0.9855, Adjusted R-squared: 0.9855 
F-statistic: 2.032e+05 on 1 and 2988 DF,  p-value: < 2.2e-16 

プロットは次のようになります。

ggplot(corsen,aes(observed,sensitivity))+geom_point()+geom_smooth(method="lm",aes(color="red"))+
  ylab(" Modeled (m)")+xlab("Observed (m)")+
  geom_line(data=oneline,aes(x=onelinex,y=oneliney,color="blue"))+ 
  scale_color_manual("",values=c("red","blue"),label=c("1:1 line","Regression Line"))+theme_bw()+theme(legend.position="top")+
  coord_cartesian(xlim=c(-0.2,2),ylim=c(-0.2,2))

相関プロット

私の質問は、よく見ると、データが 1:1 の線から外れているということです。1:1 ラインに対する R-squared を見つけるにはどうすればよいですか? 現在、私が使用した線形モデルは、指定された線に関係ありません。それは純粋に提供されたデータに基づいています。

4

1 に答える 1

2

残差を計算し、それらの二乗を合計できます。

 resid2 <- with( corsen, sum( sensitivity-observed)^2 ))

R^2 のような数値が必要な場合は、次のように計算できると思います。

 R2like <- 1 - resid2/ with(corsen, sum( sensitivity^2))
于 2013-06-13T00:21:02.917 に答える