2017-04-21 582 views
0

此代碼給我與迴歸方程及R2的曲線圖:(但我需要提及,其中x和y的方程將是(手動地)R,R 2,p值和迴歸方程

CORRELATIONP3 <-CORRELATIONP2[product=='a',] 

x<-CORRELATIONP3$b 
y<-CORRELATIONP3$p 


df <- data.frame(x = x) 
m <- lm(y ~ x, data = df) 
p <- ggplot(data = df, aes(x = x, y = y)) + 
    scale_x_continuous("b (%)") + 
    scale_y_continuous("p (%)")+ 
    geom_smooth(method = "lm", formula = y ~ x) + 
    geom_point() 
p 

eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2, 
      list(  a = format(coef(m)[1], digits = 4), 
          b = format(coef(m)[2], digits = 4), 
          r2 = format(summary(m)$r.squared, digits = 3))) 

dftext <- data.frame(x = 3, y = 0.2, eq = as.character(as.expression(eq))) 

p + geom_text(aes(label = eq), data = dftext, parse = TRUE) 

equation and r square

但是,與此代碼我有R和p值:在這裏,關於R和p值的信息中的情節,自動適合我爲什麼要這第一個以及

CORRELATIONP3 <-CORRELATIONP2[product=='a',] 

x<-CORRELATIONP3$b 
y<-CORRELATIONP3$p 


df <- data.frame(x = x) 
m <- lm(y ~ x, data = df) 
p <- ggplot(data = df, aes(x = x, y = y)) + 
    scale_x_continuous("b (%)") + 
    scale_y_continuous("p (%)")+ 
    geom_smooth(method = "lm", formula = y ~ x) + 
    geom_point() 
p 

eq <- substitute(italic(r)~"="~rvalue*","~italic(p)~"="~pvalue, list(rvalue = sprintf("%.2f",sign(coef(m)[2])*sqrt(summary(m)$r.squared)), pvalue = format(summary(m)$coefficients[2,4], digits = 3))) 


dftext <- data.frame(x = 30, y = 0.4, eq = as.character(as.expression(eq))) 
p + geom_text(aes(label = eq), data = dftext, parse = TRUE) 

R and p-value

你能告訴我怎樣才能將所有4個信息加入到一個信號圖中? (R,R2,方程和p值)

除此之外,我希望這些信息可以自動適應情節,而不是手動。

+0

我是否理解你想要公式,r2和p值都在劇情中?或者你在一個單一的情節中的所有4個信息是什麼意思?你想要在一行還是多行?對於你的第二部分,恐怕ggplot不能自動做到這一點... – Sarina

+0

@Sarina,是的,現在我只能使用2個不同的代碼的信息。我想要的是R,R²,p值和迴歸方程在一個單一的情節。最好在不同的行中。 –

回答

1

好吧,我不知道這是否是你沒有給你的數據的重複的例子,但我猜你只需要重命名您的變量之一,例如:

eq2 <- substitute(italic(r)~"="~rvalue*","~italic(p)~"="~pvalue, 
list(rvalue = sprintf("%.2f",sign(coef(m)[2])*sqrt(summary(m)$r.squared)), 
pvalue = format(summary(m)$coefficients[2,4], digits = 3))) 

,然後更改點你放在你的情節剛剛低於你的第一個陰謀的其他塊。這裏的x和y指的是文本標籤的位置,所以這些文字看起來很好。

dftext2 <- data.frame(x = 30, y = 0.12, eq2 = as.character(as.expression(eq2))) 
p + geom_text(aes(label = eq2), data = dftext2, parse = TRUE) 

請讓我知道這是否有效,如果這是你的意思。

+0

你的eq2和我的完全一樣,所以我不明白你做了什麼。你的代碼給了我我已經有的東西,只有R和p值(不是方程和R2)。 –

+0

你必須將它添加到你的第一個圖表,所以像這樣'p < - ggplot(data = df,aes(x = x,y = y))+ scale_x_continuous(「b(%)」)+ scale_y_continuous geom_text()= geom_smooth(method =「lm」,formula = y_x)+ geom_point() pp + geom_text(aes(label = eq),data = dftext,parse = TRUE)+ geom_text (aes(label = eq2),data = dftext2,parse = TRUE)' – Sarina

+0

它工作!非常感謝你 :) –