Как понять использование rep () в этом случае? - PullRequest
0 голосов
/ 19 февраля 2020

Набор данных randomdat содержит 299 obs, две категориальные переменные, var 9 содержит значения типа With XYZ и Without XYZ, var8 содержит значения типа Group A / Group B / Group C, var1 - это числовая переменная.

Тогда есть модель:

m7 <- lm(var3~var1+I(var1^2)+I(var1^3)+var9, data=randomdat)

Проверьте summary(m7), она показывает, что Without XYZ всегда на 34451,4 меньше With XYZ.

> summary(m7)

Call:
lm(formula = var3 ~ var1 + I(var1^2) + I(var1^3) + var9, data = randomdat)

Residuals:
    Min      1Q  Median      3Q     Max 
-391506  -75127    4799   77175  323856 

Coefficients:
                     Estimate    Std. Error t value            Pr(>|t|)    
(Intercept)     -162934.42035   18571.30251  -8.773 <0.0000000000000002 ***
var1              10927.87454     741.36511  14.740 <0.0000000000000002 ***
I(var1^2)          -180.82979      10.44006 -17.321 <0.0000000000000002 ***
I(var1^3)             0.99499       0.04223  23.562 <0.0000000000000002 ***
var9Without XYZ  -34451.43378   14570.55030  -2.364              0.0187 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 117500 on 294 degrees of freedom
Multiple R-squared:  0.8642,    Adjusted R-squared:  0.8624 
F-statistic: 467.9 on 4 and 294 DF,  p-value: < 0.00000000000000022

Тогда есть две прогнозируемые модели:

m7_predictwith <- predict(m7,list(var1=randomdat$var1, var9 = rep("With XYZ",299)))
m7_predictwout <- predict(m7,list(var1=randomdat$var1, var9 = rep("Without XYZ",299)))

Если вы построите их, вы увидите, что две линии не перекрываются.

ggplot(randomdat, aes(x = var1, y = var3)) + 
    geom_point(aes(colour = var8, shape = var8)) + 
    geom_line(aes(x=randomdat$var1,y=m7_predictwith), color = 'red', lty = 2) + 
    geom_line(aes(x=randomdat$var1,y=m7_predictwout), color = 'black', lty = 3)

enter image description here

Теперь возникает вопрос, как понимать var9 = rep("With XYZ",299) или var9 = rep("Without XYZ",299) в этом случае? Разве они не означают заменить все значения в var9 на With XYZ или Without XYZ? var1 одинаково в m7_predictwith и m7_predictwout, линии сюжета у них должны быть просто одной линией? В этом случае очень запутано использование синтаксиса rep().

1 Ответ

1 голос
/ 19 февраля 2020

rep() повторяет значения:

> rep("With XYZ", 5)
[1] "With XYZ" "With XYZ" "With XYZ" "With XYZ" "With XYZ"

Здесь он используется для создания наборов данных, которые содержат:

  • Наблюдаемые значения var1
  • Фиксированное значение var9.

var9 является переменной фактора, а в регрессии его расчетный коэффициент составляет -34451,43378. Поэтому, если вы прогнозируете одну строку с фиксированным значением для var9, равным "With XYZ", а затем другую строку с фиксированным значением, равным "Without XYZ", линия "Without XYZ" будет смещена вниз на постоянное значение 34451, создавая параллель линии.

...