2016-05-09 4 views
1

Ich möchte zwei lineare Regression Plots vergleichen und ihre jeweiligen Äquivalenzen auf der Handlung oder etwas darüber drucken. Ich weiß nicht, wie man die Gleichung mit dem r2-Wert erscheinen lässt und sie auf ihre jeweilige Kurve legt (idealerweise auf einer Linie). Die Textdatei ist einfach wie folgt:Wie schreibe ich eine Gleichung der Linie mit r2 Wert auf zwei Plots

num abs 
0.875 0.128 
1.75 0.262 
2.5 0.579 
5 1.292 
10 2.151 
.875 0.185 
1.75 0.273 
2.5 0.507 
5 1.561 
10 2.581 

Danke für die Hilfe.

d <- read.table("C:/Users/trinh/OneDrive/Documents/R scripts/BSA.txt", header=T) 
attach(d) 
da <- d[1:5,] 
da2 <- d[6:10,] 
reg.da <- lm(abs[1:5]~ num[1:5]) 
reg.da2 <- lm(abs[6:10]~num[6:10]) 
par(mfrow=c(1,2)) 

#1st plot 
plot(da,main="Regression line for BSA-1",xlab="[BSA]",ylab="Abs") 
abline(reg.da) 

#second plot 
plot(da2,main="Regression line for BSA-2",xlab="[BSA]",ylab="Abs") 
abline(reg.da2) 

#establish b intercept/slope and r^2 
cf<-round(coef(reg.da2),2) 
r2.1<-format(summary(reg.da2)$r.squared, digits = 3) 

#first eqn: 
eq1<-paste("y = ",cf[1], 
    ifelse(sign(cf[2])==1, " + ", " - "), cf[2],"x") 
mtext(eq1,side=3) 
mtext(bquote(r^2 == .(r2.1)),adj=1) 

#establish b intercept/slope and r^2 
cf1<-round(coef(reg.da),2) 
r2.2<-format(summary(reg.da)$r.squared, digits = 3) 

#second eqn: 
eq2<-paste("y =", cf1[1], 
    ifelse(sign(cf1[2])==1, " + ", " - "), cf1[2],"x") 
mtext(eq2,side=3) 
mtext(bquote(r^2 == .(r2.2)),adj=1) 

Antwort

0

Der Text für das erste Diagramm sollte vor dem Hinzufügen des zweiten Diagramms platziert werden. Der folgende Code wurde verwendet, um die Beispielfigur basierend auf Ihren Daten zu generieren. Ich fügte zu den Argumenten für mtext() hinzu, um die Größe des Textes zu reduzieren und zu vermeiden, dass die Gleichung den r-Quadrat-Wert stört.

par(mfrow=c(1,2)) 

#1st plot 
plot(da,main="Regression line for BSA-1",xlab="[BSA]",ylab="Abs") 
abline(reg.da) 
#establish b intercept/slope and r^2 
cf<-round(coef(reg.da2),2) 
r2.1<-format(summary(reg.da2)$r.squared, digits = 3) 

#first eqn: 
eq1<-paste("y = ",cf[1], 
      ifelse(sign(cf[2])==1, " + ", " - "), cf[2],"x") 
mtext(eq1,side=3,adj=0,cex=0.7) 
mtext(bquote(r^2 == .(r2.1)),adj=1,cex=0.7) 

#second plot 
plot(da2,main="Regression line for BSA-2",xlab="[BSA]",ylab="Abs") 
abline(reg.da2) 

#establish b intercept/slope and r^2 
cf1<-round(coef(reg.da),2) 
r2.2<-format(summary(reg.da)$r.squared, digits = 3) 

#second eqn: 
eq2<-paste("y =", cf1[1], 
      ifelse(sign(cf1[2])==1, " + ", " - "), cf1[2],"x") 
mtext(eq2,side=3,adj=0,cex=0.7) 
mtext(bquote(r^2 == .(r2.2)),adj=1,cex=0.7) 

enter image description here

+0

Dank! Ich schätze Ihre Antwort/Lösung –

Verwandte Themen