这个问题可能听起来有点奇怪。我想知道如何报告R中的R-sqaured值与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平方?现在我使用的线性模型与指定的线无关。它纯粹基于提供的数据。
答案 0 :(得分:2)
您可以计算残差并求它们的平方:
resid2 <- with( corsen, sum( sensitivity-observed)^2 ))
如果你想要一个类似R ^ 2的数字,我想你可以计算:
R2like <- 1 - resid2/ with(corsen, sum( sensitivity^2))