Вывод из скрипта scatter3d R — как прочитать уравнение

#r #plot #regression

#r #график #регрессия

Вопрос:

Я использую scatter3d, чтобы найти соответствие в моем R-скрипте. Я сделал это, и вот результат:

 Call:
lm(formula = y ~ (x   z)^2   I(x^2)   I(z^2))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.78454 -0.02302 -0.00563  0.01398  0.47846 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.051975   0.003945 -13.173  < 2e-16 ***
x            0.224564   0.023059   9.739  < 2e-16 ***
z            0.356314   0.021782  16.358  < 2e-16 ***
I(x^2)      -0.340781   0.044835  -7.601 3.46e-14 ***
I(z^2)       0.610344   0.028421  21.475  < 2e-16 ***
x:z         -0.454826   0.065632  -6.930 4.71e-12 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Residual standard error: 0.05468 on 5293 degrees of freedom
Multiple R-squared: 0.6129, Adjusted R-squared: 0.6125 
F-statistic:  1676 on 5 and 5293 DF,  p-value: < 2.2e-16
  

Исходя из этого, каково уравнение линии наилучшего соответствия? Я не совсем уверен, как это читать? Кто-нибудь может объяснить? Спасибо!

Комментарии:

1. Я бы начал с ?lm файла справки для lm функции

2. Я бы посоветовал вам использовать rsm R pacakge .

Ответ №1:

Это базовая таблица выходных данных регрессии. Оценки параметров (столбец «Оценка») являются наиболее подходящими линейными коэффициентами, соответствующими различным терминам в вашей модели. Если вы не знакомы с этой терминологией, я бы посоветовал ознакомиться с каким-нибудь руководством по линейной модели и регрессии. В Интернете их тысячи. Я бы также посоветовал вам поиграть с некоторыми более простыми 2D-моделями.

Например, давайте создадим некоторые данные с пересечением 2 и наклоном 0,5:

 # Simulate data
set.seed(12345)
x = seq(0, 10, len=50)
y = 2   0.5 * x   rnorm(length(x), 0, 0.1)
data = data.frame(x, y)
  

Теперь, когда мы посмотрим на подгонку, вы увидите, что в столбце оценки отображаются те же значения:

 # Fit model
fit = lm(y ~ x, data=data)
summary(fit)
  
 > summary(fit)

Call:
lm(formula = y ~ x, data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.26017 -0.06434  0.02539  0.06238  0.20008 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 2.011759   0.030856   65.20   <2e-16 ***
x           0.501240   0.005317   94.27   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.1107 on 48 degrees of freedom
Multiple R-squared: 0.9946, Adjusted R-squared: 0.9945 
F-statistic:  8886 on 1 and 48 DF,  p-value: < 2.2e-16 
  

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

 # Make plot
dev.new(width=4, height=4)
plot(x, y, ylim=c(0,10))
abline(fit$coef[1], fit$coef[2])
  

введите описание изображения здесь

Комментарии:

1. но у меня нет объекта lm, у меня есть объект scatter3d

2. Сводка lm является частью того, что scatter3d вернул. Вы можете получить доступ ко всем его элементам точно так же, как если бы вы только подгоняли модель из командной строки. Я БЫ НАСТОЯТЕЛЬНО рекомендовал взять вводную книгу R для такого рода материалов. Их много, и все они полностью охватывают эти основы. Также посмотрите на множество бесплатных текстов на CRAN: cran.r-project.org/other-docs.html . Или погуглите какую-нибудь комбинацию «руководство по примерам регрессии r».

Ответ №2:

Это не плоскость, а скорее поверхность параболоида (и с использованием ‘y’ в качестве третьего измерения, поскольку вы уже использовали ‘z’):

 y =  -0.051975   x * 0.224564    z * 0.356314   
          -x^2 * -0.340781   z^2 * 0.610344 - x * z * 0.454826