#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