2017-04-21 6 views
0

이 코드 내게 회귀 방정식과 R2와 플롯을 제공한다 : (하지만 언급해야하는 X 및 방정식 것이다 Y (수동)R은, 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(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) 
나는 R과 p- 값이이 코드를 equation and r square

하지만, : 그리고 여기에 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는 텍스트 lable의 위치를 ​​나타내므로 텍스트가 괜찮아 보일 때까지 이것들을 가지고 놀 수 있습니다.

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_continuousgeom_smooth (메서드 = "lm", 수식 = 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

효과가있었습니다! 고마워요 :) –