Подгонка плоскости ко многим точкам в 3D - PullRequest
1 голос
/ 21 июня 2019

У меня есть набор из ~ 700 точек, и я пытаюсь найти плоскость с минимальным расстоянием до всех точек.

head(data)
          V6     V7     V8
10664  16.80  10.00 107.28
10714  24.15   5.07 108.32
10764  26.37  27.91  68.55
10814  64.15 110.30 108.90
10864 110.31 103.40 107.79
10914 105.08  99.12  69.36
plot <- scatterplot3d(data, type="p", highlight.3d=TRUE, angle=55, 
scale.y=0.7, pch=16, main="Fitting a plane to N points")

reg <- lm(data)

summary (reg) возвращает этот вывод:


Call:
lm(formula = data)

Residuals:
    Min      1Q  Median      3Q     Max 
-80.572 -38.094  -0.155  39.212  77.469 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 78.82248    8.20208   9.610   <2e-16 ***
V7          -0.01363    0.03754  -0.363    0.717    
V8          -0.01541    0.08503  -0.181    0.856    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 44.51 on 689 degrees of freedom
Multiple R-squared:  0.0002333, Adjusted R-squared:  -0.002669 
F-statistic: 0.08037 on 2 and 689 DF,  p-value: 0.9228

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

plot$plane3d(78.82248, -0.01363, -0.01541, lty.box = "solid")

См. Изображение здесь

1 Ответ

0 голосов
/ 22 июня 2019

Я независимо проверил, что - согласно вашему графику рассеяния - этот набор данных представляет собой два параллельных плоских облака точек, см. Изображение ниже.Когда я подхожу к уравнению плоской поверхности «V8 = a + (b * V6) + (c * V7)», я получаю параметры a = 8.8327170551088543E + 01, b = -3.0935322191121724E-03 и c = -1.4075477287696175E-02

plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...