У мене лінійка найкраще підходить. Мені потрібні точки даних, які не змінять мою лінію найкращим чином


15

Я веду презентацію про примірні лінії. У мене проста лінійна функція, y=1x+b . Я намагаюся отримати розрізнені точки даних, які я можу розмістити в діаграмі розкидання, що дозволить моїй лінії найкраще відповідати тому ж рівнянню.

Я хотів би вивчити цю техніку або в R, або в Excel - залежно від того, що легше.


1
Випадок множинної регресії з будь-яким набором коефіцієнтів (з яких ваш окремий випадок) обговорюється в пункті 2 цієї відповіді . Дотримуючись кроків, там вирішується простий випадок регресії. Цей підхід працює практично в будь-якому пакеті, де ви можете імітувати випадкові значення потрібного розподілу та підходити до регресійних моделей.
Glen_b -Встановіть Моніку

autodeskresearch.com/publications/samestats представляє приємне узагальнення цього: модельований відпал використовується для створення розсипів, які мають не лише бажані значення підсумкової статистики, але й мають визначену форму (наприклад, "datasaurus"). Це робота Джастіна Матейки та Джорджа Фіцмауріце під назвою « Одна і та ж статистика, різні графіки: генерування наборів даних із різноманітною зовнішністю та ідентичною статистикою за допомогою симуляційного відпалу .
whuber

Відповіді:


28

Виберіть будь-який (хi) умови, що принаймні два з них відрізняються. Встановіть перехоплення β0 і нахил β1 і визначте

у0i=β0+β1хi.

Такий підхід ідеальний. Не змінюючи придатність, ви можете змінити у0 до у=у0+ε , додавши до неї будь-який вектор помилки ε=(εi) за умови, що він є ортогональним як вектору х=(хi) і постійному вектору (1,1,,1) . Найпростішим способом отримати таку помилку є вибір будь-якого вектора e і нехай ε - залишки після регресування eпроти x . У наведеному нижче коді e формується як набір незалежних випадкових нормальних значень із середнім значенням 0 та загальним стандартним відхиленням.

Крім того, ви можете навіть попередньо вибрати кількість розкиду, можливо, встановивши, яким повинен бути R2 . Нехай τ2=вар(уi)=β12вар(хi) , змінює масштаб цих залишків, щоб вони мали різницю

σ2=τ2(1/R2-1).

Цей метод є повністю загальним: усі можливі приклади (для заданого набору хi ) можна створити таким чином.


Приклади

Квартет Анскомба

Ми можемо легко відтворити квартет Anscombe з чотирьох якісно відмінних двовимірних наборів даних, що мають однакову описову статистику (через другий порядок).

Малюнок

Код надзвичайно простий і гнучкий.

set.seed(17)
rho <- 0.816                                             # Common correlation coefficient
x.0 <- 4:14
peak <- 10
n <- length(x.0)

# -- Describe a collection of datasets.
x <- list(x.0, x.0, x.0, c(rep(8, n-1), 19))             # x-values
e <- list(rnorm(n), -(x.0-peak)^2, 1:n==peak, rnorm(n))  # residual patterns
f <- function(x) 3 + x/2                                 # Common regression line

par(mfrow=c(2,2))
xlim <- range(as.vector(x))
ylim <- f(xlim + c(-2,2))
s <- sapply(1:4, function(i) {
  # -- Create data.
  y <- f(x[[i]])                                         # Model values
  sigma <- sqrt(var(y) * (1 / rho^2 - 1))                # Conditional S.D.
  y <- y + sigma * scale(residuals(lm(e[[i]] ~ x[[i]]))) # Observed values

  # -- Plot them and their OLS fit.
  plot(x[[i]], y, xlim=xlim, ylim=ylim, pch=16, col="Orange", xlab="x")
  abline(lm(y ~ x[[i]]), col="Blue")

  # -- Return some regression statistics.
  c(mean(x[[i]]), var(x[[i]]), mean(y), var(y), cor(x[[i]], y), coef(lm(y ~ x[[i]])))
})
# -- Tabulate the regression statistics from all the datasets.
rownames(s) <- c("Mean x", "Var x", "Mean y", "Var y", "Cor(x,y)", "Intercept", "Slope")
t(s)

Вихід дає описову статистику другого порядку для даних (х,у) для кожного набору даних. Усі чотири лінії однакові. Ви можете легко створити більше прикладів, змінивши x(x-координати) та e(шаблони помилок) на самому початку.

Моделювання

Rуβ=(β0,β1)R20R21х

simulate <- function(x, beta, r.2) {
  sigma <- sqrt(var(x) * beta[2]^2 * (1/r.2 - 1))
  e <- residuals(lm(rnorm(length(x)) ~ x))
  return (y.0 <- beta[1] + beta[2]*x + sigma * scale(e))
}

(Перенести це в Excel було б непросто - але це боляче.)

(х,у)60 хβ=(1,-1/2)1-1/2R2=0,5

Малюнок

n <- 60
beta <- c(1,-1/2)
r.2 <- 0.5   # Between 0 and 1

set.seed(17)
x <- rnorm(n)

par(mfrow=c(1,4))
invisible(replicate(4, {
  y <- simulate(x, beta, r.2)
  fit <- lm(y ~ x)
  plot(x, y)
  abline(fit, lwd=2, col="Red")
}))

summary(fit)R2хi


1
Дуже приємно, дякую! На жаль, ваш підхід, мабуть, не застосовується негайно до цього питання: набори даних, що відповідають формату Anscombe, з тим самим графіком вікон та вусів (середнє / std / серединний / MAD / min / max) , чи не так?
Стефан Коласа

@Stephan Ви праві, що це не так, тому що це дуже нелінійна проблема. Це можна вирішити аналогічним чином - по суті, шляхом пошуку можливих рішень для обмеженої проблеми оптимізації, але вимагає іншого порядку оптимізації, і рішення не гарантуються.
whuber
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.