最適なラインがあります。最適なラインを変更しないデータポイントが必要です


15

線のフィッティングに関するプレゼンテーションを行っています。単純な線形関数ます。散布図に入れることができる散布データポイントを取得しようとしています。これにより、同じ方程式に最適なラインを維持できます。y=1x+b

RまたはExcelのどちらか簡単な方でこのテクニックを学びたいです。


1
この回答の項目(2)で、係数のセット(これは特殊なケースです)を使用した重回帰のケースについて説明します。手順に従って、単純な回帰のケースを解決します。このアプローチは、希望する分布のランダムな値をシミュレートし、回帰モデルに適合できるほぼすべてのパッケージで機能します。
Glen_b-モニカを

autodeskresearch.com/publications/samestatsは、これの優れた一般化を示しています。シミュレートされたアニーリングは、要約統計の望ましい値を持つだけでなく、決定された形状(「データサウルス」など)を持つ散布図を作成するために使用されます これは、Justin MatejkaとGeorge Fitzmauriceによる「Same Stats、Different Graphs:Generated Datasets with Varied Appearance and Identical Statistics through Simulated Annealing」というタイトルの作品です。
whuber

回答:


28

少なくとも2つが異なる場合は、任意の(xi)を選択します。切片セットβ0及び傾きをβ1、および定義

y0=β0+β1バツ

このフィットは完璧です。フィット感を変更することなく、変更することができy0に対してy=y0+εエラーベクトルを加算することによりε=εそれは、両方のベクトルに直交する提供にバツ=バツ及び定数ベクトル111。このようなエラーを取得する簡単な方法は、任意のベクトルeを選択し、εeの回帰時の残差とすることです。e反対バツ。以下のコードでは、eは平均0および共通標準偏差を持つ独立したランダムな正規値のセットとして生成されます。

さらに、おそらくR 2を指定することにより、散布量を事前に選択することもできます。まかせτ 2 = VAR Y I= β 2 1 VAR X Iの分散を有するように、それらの残差を再スケールR2τ2=vary=β12varバツ

σ2=τ21/R21

この方法は完全に一般的です:すべての可能な例(バツ特定のセット)はこの方法で作成できます。


アンスコムのカルテット

同じ記述統計(2次まで)を持つ4つの定性的に異なる2変量データセットの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)

出力は、各データセットのバツyデータの2次記述統計を提供します。 4行はすべて同じです。最初に(xx座標)とe(エラーパターン)を 変更することで、より多くの例を簡単に作成できます。

シミュレーション

Ryβ=β0β1R20R21バツ

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に移植するのは難しくありませんが、少し苦痛です。)

バツy60 バツβ=11/211/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バツ


1
とても素敵です、ありがとう!残念ながら、あなたのアプローチはこの質問にすぐには当てはまらないようです:同じ箱とひげのプロット(平均/標準/中央値/ MAD /最小/最大)を持つAnscombeのようなデータセットですか?
ステファンKolassa

@Stephanそれはそうではないことは正しい、それは非常に非線形の問題だからだ。基本的に制約付き最適化問題の実行可能な解決策を見つけることで同様の方法で解決できますが、別の最適化ルーチンが必要であり、解決策は保証されません。
whuber
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.