2次元データから回帰直線と任意の(x1, y1)が予測曲線上にあるかどうかのp値を算出する方法

以下の方法を用いて、2次元データから回帰直線と任意の(x1, y1)が予測曲線上にあるかどうかのp値を算出することができます。 
Julia のコードを末尾に載せます。 
p値 (pValue) は、0.4974525172673961 になります。 

 1. 残差平方和 (SSE) の計算


残差平方和 (SSE) は、回帰直線と各データ点との距離の二乗和を表します。
SSEは、回帰モデルがデータにどの程度フィットしていないかを表す指標となります。 
  •  計算式 SSE = Σ(yi - ŷi)^2 
    •  yi: データ点のy座標 
    •  ŷi: 回帰直線による予測値 


2. 自由度 (df) と data の標本数の関係 


自由度 (df) は、データの独立性に基づいて、統計量 (例: t検定量) の分布を決定するパラメータです。 
  •  計算式 df = n - k - 1 
    • n: データの標本数 
    • k: 回帰直線の次数 (線形回帰の場合、k = 1) 

3. t 検定量の計算 


t検定量は、回帰直線と任意の(x1, y1)が予測曲線上にあるかどうかを検定するために用いられます。 
  •  計算式 t = (y1 - ŷ1) / √(SSE / df)
    • y1: 任意の点のy座標
    • ŷ1: 回帰直線による予測値

  • Welchの補正 (等分散性の仮定が成立していない場合)
  • t = (y1 - ŷ1) / √(SSE / df * (1 / n + (x1 - x̄)^2 / Σ(xi - x̄)^2))
    • y1: 任意の点のy座標
    • ŷ: 回帰直線による予測値
    • SSE: 残差平方和
    • df: 自由度
    • n: データの標本数
    • x1: 任意の点のx座標
    • x̄: データのx座標の平均
    • Σ(xi - x̄)^2: データのx座標の偏差の二乗和

4. Julia のコード

-------
using Distributions, DataFrames, GLM

# データの準備
x = [1.2, 2.1, 3.0, 4.1, 5.2]
y = [2.1, 4/2, 6.3, 8.5, 10.1]

data = DataFrame([x,y], [:x, :y])

# 回帰直線の計算
# 線形回帰モデルの作成
mdl = lm(@formula(y ~ x), data)

#  回帰直線の関数
f(x) = coef(mdl)[2] .* x .+ coef(mdl)[1]

# 任意の点(x1, y1)
x1 = 3.5;
y1 = 7.5;

# 残差 resid と標準誤差 σ の計算
# 自由度は、標本数から1を引いて、回帰直線の次数 (線形回帰の場合 1) を更に引く (合計2を引く)
resid = y .- predict(mdl)
σ = sqrt(sum(resid.^2) / (length(x) - 2))

t = (y1 - f(x1) ) / σ

# Distribution.jl で自由度標本数−2 の t 分布から p 値を得る
tDistribution = TDist(length(x) - 2)
pValue = 2 * cdf(tDistribution, -abs(t))

B! LINE