통계학 입문의 공 Julia (4) - 최소 제곱법과 결정 계수
통계학 입문 동행 Julia (2) - 피어슨의 적률 상관 계수 - Qiita
통계학 입문의 공 Julia (3) - 순상관계수와 자기상관계수 - Qiita
통계학 입문의 공공 Julia (4) - 최소제곱법과 결정계수 - Qiita
통계학 입문 동행 Julia (5) - 베이즈 정리 - Qiita
통계학 입문 동행 Julia (6) - 드 메레 문제 = Oiita
통계학을 공부하기 위해 「통계학 입문」(도쿄 대학 출판회)을 읽기 시작했습니다. 연습 문제가 있습니다만, 이것도 공부중의 Julia를 사용해 계산해 가고 싶습니다.
1. 최소 제곱법 least squares method
(x, y)의 2차원 데이터의 산포도를 그려 그 그래프가 직선으로 볼 때 1차 함수의 y= bx + a 의 b, a 를 구하는 방법을 최소 제곱법이라고 합니다.
구체적으로는, 이하의 L을 최소로 하는 a, b를 구해 갑니다.
\begin{align}
&L=\sum_{i=1}^n\{y_i-(bx_i+a)\}^2
\tag{1}\\
\\
&最小値(極小値)では、それぞれの偏微分が0になる。\\
&a,bで偏微分する\\
\\
\\
\\
&na + (\sum x_i)b = \sum y_i \tag{2}\\
&(\sum x_i)a + (\sum x_i^2)b = \sum x_i y_i \tag{3}\\
\\
\\
&これを解くと\\
\\
\\
&b = \frac{\sum x_i y_i - n\bar{x}\bar{y}}{\sum x_i^2 -n\bar{x}^2} \tag{4}\\
&a = \bar{y} - b\bar{x} \tag{5}\\
&(何故ならxとyの平均値より: \quad \bar{x}=\sum x_i/n, \quad \bar{y}=\sum y_i/n \quad)
\\
\\
\\
&\sum(x_i-\bar{x})(y_i-\bar{y})=\sum x_i y_i - n\bar{x}\bar{y} \tag{6}\\
&\sum(x_i - \bar{x})^2 = \sum x_i^2 - n\bar{x}^2 \tag{7}\\
\\
\\
\\
&b = \frac{ \sum(x_i - \bar{x})(y_i - \bar{y})}{\sum(x_i - \bar{x})^2} \tag{8}\\
\\
&つまり
\\
\\
&b = \frac{ ( \sum(x_i - \bar{x})(y_i - \bar{y}) )/n}{ ( \sum(x_i - \bar{x})^2 ) /n}
= \frac{C_{xy}}{(S_x)^2}
= \frac{共分散}{xの標準偏差^2} \tag{9}
\\
\\
\\
&またピアソンの積率相関係数の定義は以下の通りだから\\
&r = \frac {\sum (x_i - \bar{x}) (y_i - \bar{y})} {\sqrt {\sum(x_i-\bar{x})^2} \sqrt {\sum(y_i-\bar{y})^2}} \tag{10}
\\
\\
&式(8)と式(10)を比べて、bとrの関係は以下の通りになる。
\\
\\
&b = r \frac{S_y}{S_x} \tag{11}
\\
\\
&\qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \\
\end{align}
식 (9)에 의하면, b는 julia의 이하의 식으로 간단하게 계산할 수 있습니다.
b = cov(x,y) / std(x)^2
통계학 입문 동행 Julia (2) - 피어슨의 적률 상관 계수 - Qiita 로 계산한 「도도부현별의 자민당 지지율과 소지 비율」의 예를 여기에서도 생각해 보겠습니다. 최소 제곱법으로 1차 함수 y= bx + a 의 b 와 a 를 구합니다.
using Statistics
using Plots
x=[41.4,76.3,59.2,51.8,52.5,53.2,62.4,55,57.7,63.2,37.5,48.5,32.4,20.5,
47.9,68.9,68.5,52.5,63.3,58.8,59.7,48.4,40.7,51,50.9,34.3,25.8,32.1,
34.4,55.1,60.3,57,45.6,54.2,55.1,55.7,70.3,61.8,47.6,42.5,71.3,55.2,
65.2,42.9,54.7,62,48.2]
y=[52.8,71.2,72.6,63.7,81.3,81.8,70.9,74,73.2,72.9,66.7,65.7,43.7,55.5,
79.6,85.7,75.3,80.5,73,77,77.5,69.2,60,78.2,79.5,61.8,49.6,59.6,72.1,
71,76.3,72.8,71.8,60.7,67,71.8,71.2,68.3,68.5,54.8,76,65.8,69.4,66.9,
69.7,71.2,59]
b=cov(x,y) / std(x)^2
a=mean(y)-b*mean(x)
println(b)
println(a)
x1=0
y1=a
push!(x,x1)
push!(y,y1)
x2=80
y2=b*x2+a
push!(x,x2)
push!(y,y2)
println(x)
println(y)
plot(x,y,
seriestype=:scatter,
title="Jimin-House(1983)",
lab="House",
xlabel = "a (Jimin)",
ylabel = "b (House)",
legend=:topleft
)
최소 제곱법으로 산점도에 가장 적합한 직선을 구했습니다. 즉 1차 함수의 기울기 b와 절편을 구한 것입니다. 게다가, 이 1차 함수의 직선이 이하의 2점을 통과하는 계산시켜, 산포도에 함께 플롯 시켰다. 빨간색 직선은 이 두 점을 통과하도록 수동으로 그린 것입니다. 산점도와 직선을 함께 그래프에 그리는 방법을 몰랐기 때문에.
(0, 45.0703), (80, 82.1926)
일단 println의 출력은 다음과 같습니다. b 와 a 의 값이 출력되고 있습니다.
0.4640285720454987 # bの値
45.07033826566744 # aの値
[41.4, 76.3, 59.2, ..., 62.0, 48.2, 0.0, 80.0]
[52.8, 71.2, 72.6, ..., 71.2, 59.0, 45.0703, 82.1926]
최소제곱법에 대해서는 이하의 사이트도 알기 쉽습니다.
최소 제곱법(직선)의 간략한 설명
htps://ま thtらん。 jp / 아 sts 쿠레 s
이변수의 2차 함수
htps://ま thtらん。 jp / 쿠아 d 라치 c
정책: 최소→극소→미분이 0이라는 수2의 사고방식을 사용합니다.
2. 결정 계수
\begin{align}
&\hat{y_i} = bx_i + a \\
&最小二乗法で求めた直線上の点 \hat{y_i} と実データ y_i とがどの程度違うのか、\\
&その距離を計算することにする。\\
\\
\\
&\sum d_i^2 \equiv \sum(y_i - \hat{y_i})^2 = (1-r^2) \sum (y_i-\bar{y})^2 \tag{12}\\
\\
&rは式(10)のもの。\\
\\
\\
&r^2を決定係数という。\\
&r^2が1に近づくほど、 y_i は \hat{y_i} に近づく。\\
&つまりr^2が1に近づくほど、従属変数yは独立変数xによって決定されている。\\
&図で言えば、r^2が1に近づくほど、散布図は直線に集まっている。\\
\\
&\qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad\\
\end{align}
3. 부트 스트랩
P65의 질문 3.4를 푸십시오.
이 문제를 여기에 게재하는 것이 좋은지 확실하지 않지만 성취로 여기에 게재합니다.
부트 스트랩은 생성 된 샘플에서 여러 번 리샘플링을 수행하고 이러한 샘플에서 통계량을 계산하여 추측을 수행하는 방법입니다.
현 단계에서는 부트스트랩의 의미를 이해하지 못했지만 문제에 있는 절차를 프로그램화하여 히스토그램을 그려 보았습니다.
x=[71, 68, 66, 67, 70, 71, 70, 73, 72, 65, 66]
y=[69, 64, 65, 63, 65, 62, 65, 64, 66, 59, 62]
plot(x,y,seriestype=:scatter)
function myrandom11(x,y)
n = 11
idx=rand(1:n, 11)
xx = zeros(n)
yy = zeros(n)
for i in 1:n
j=idx[i]
xx[i] = x[j]
yy[i] = y[j]
end
cor(xx,yy)
end
function do200(x,y)
n = 200
rr = zeros(n)
for i in 1:n
rr[i] = myrandom11(x,y)
end
rr
end
rr = do200(x,y)
histogram(rr , bins=10)
histogram은 Plots의 함수입니다. 도수라든지 자동적으로 계산해 주는 것 같고 뛰어난 물건이군요. 조금 감동했습니다.
이번은 이상입니다.
Reference
이 문제에 관하여(통계학 입문의 공 Julia (4) - 최소 제곱법과 결정 계수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sand/items/38e7e08a50b82849a859
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
\begin{align}
&L=\sum_{i=1}^n\{y_i-(bx_i+a)\}^2
\tag{1}\\
\\
&最小値(極小値)では、それぞれの偏微分が0になる。\\
&a,bで偏微分する\\
\\
\\
\\
&na + (\sum x_i)b = \sum y_i \tag{2}\\
&(\sum x_i)a + (\sum x_i^2)b = \sum x_i y_i \tag{3}\\
\\
\\
&これを解くと\\
\\
\\
&b = \frac{\sum x_i y_i - n\bar{x}\bar{y}}{\sum x_i^2 -n\bar{x}^2} \tag{4}\\
&a = \bar{y} - b\bar{x} \tag{5}\\
&(何故ならxとyの平均値より: \quad \bar{x}=\sum x_i/n, \quad \bar{y}=\sum y_i/n \quad)
\\
\\
\\
&\sum(x_i-\bar{x})(y_i-\bar{y})=\sum x_i y_i - n\bar{x}\bar{y} \tag{6}\\
&\sum(x_i - \bar{x})^2 = \sum x_i^2 - n\bar{x}^2 \tag{7}\\
\\
\\
\\
&b = \frac{ \sum(x_i - \bar{x})(y_i - \bar{y})}{\sum(x_i - \bar{x})^2} \tag{8}\\
\\
&つまり
\\
\\
&b = \frac{ ( \sum(x_i - \bar{x})(y_i - \bar{y}) )/n}{ ( \sum(x_i - \bar{x})^2 ) /n}
= \frac{C_{xy}}{(S_x)^2}
= \frac{共分散}{xの標準偏差^2} \tag{9}
\\
\\
\\
&またピアソンの積率相関係数の定義は以下の通りだから\\
&r = \frac {\sum (x_i - \bar{x}) (y_i - \bar{y})} {\sqrt {\sum(x_i-\bar{x})^2} \sqrt {\sum(y_i-\bar{y})^2}} \tag{10}
\\
\\
&式(8)と式(10)を比べて、bとrの関係は以下の通りになる。
\\
\\
&b = r \frac{S_y}{S_x} \tag{11}
\\
\\
&\qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \\
\end{align}
b = cov(x,y) / std(x)^2
using Statistics
using Plots
x=[41.4,76.3,59.2,51.8,52.5,53.2,62.4,55,57.7,63.2,37.5,48.5,32.4,20.5,
47.9,68.9,68.5,52.5,63.3,58.8,59.7,48.4,40.7,51,50.9,34.3,25.8,32.1,
34.4,55.1,60.3,57,45.6,54.2,55.1,55.7,70.3,61.8,47.6,42.5,71.3,55.2,
65.2,42.9,54.7,62,48.2]
y=[52.8,71.2,72.6,63.7,81.3,81.8,70.9,74,73.2,72.9,66.7,65.7,43.7,55.5,
79.6,85.7,75.3,80.5,73,77,77.5,69.2,60,78.2,79.5,61.8,49.6,59.6,72.1,
71,76.3,72.8,71.8,60.7,67,71.8,71.2,68.3,68.5,54.8,76,65.8,69.4,66.9,
69.7,71.2,59]
b=cov(x,y) / std(x)^2
a=mean(y)-b*mean(x)
println(b)
println(a)
x1=0
y1=a
push!(x,x1)
push!(y,y1)
x2=80
y2=b*x2+a
push!(x,x2)
push!(y,y2)
println(x)
println(y)
plot(x,y,
seriestype=:scatter,
title="Jimin-House(1983)",
lab="House",
xlabel = "a (Jimin)",
ylabel = "b (House)",
legend=:topleft
)
(0, 45.0703), (80, 82.1926)
0.4640285720454987 # bの値
45.07033826566744 # aの値
[41.4, 76.3, 59.2, ..., 62.0, 48.2, 0.0, 80.0]
[52.8, 71.2, 72.6, ..., 71.2, 59.0, 45.0703, 82.1926]
\begin{align}
&\hat{y_i} = bx_i + a \\
&最小二乗法で求めた直線上の点 \hat{y_i} と実データ y_i とがどの程度違うのか、\\
&その距離を計算することにする。\\
\\
\\
&\sum d_i^2 \equiv \sum(y_i - \hat{y_i})^2 = (1-r^2) \sum (y_i-\bar{y})^2 \tag{12}\\
\\
&rは式(10)のもの。\\
\\
\\
&r^2を決定係数という。\\
&r^2が1に近づくほど、 y_i は \hat{y_i} に近づく。\\
&つまりr^2が1に近づくほど、従属変数yは独立変数xによって決定されている。\\
&図で言えば、r^2が1に近づくほど、散布図は直線に集まっている。\\
\\
&\qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad\\
\end{align}
3. 부트 스트랩
P65의 질문 3.4를 푸십시오.
이 문제를 여기에 게재하는 것이 좋은지 확실하지 않지만 성취로 여기에 게재합니다.
부트 스트랩은 생성 된 샘플에서 여러 번 리샘플링을 수행하고 이러한 샘플에서 통계량을 계산하여 추측을 수행하는 방법입니다.
현 단계에서는 부트스트랩의 의미를 이해하지 못했지만 문제에 있는 절차를 프로그램화하여 히스토그램을 그려 보았습니다.
x=[71, 68, 66, 67, 70, 71, 70, 73, 72, 65, 66]
y=[69, 64, 65, 63, 65, 62, 65, 64, 66, 59, 62]
plot(x,y,seriestype=:scatter)
function myrandom11(x,y)
n = 11
idx=rand(1:n, 11)
xx = zeros(n)
yy = zeros(n)
for i in 1:n
j=idx[i]
xx[i] = x[j]
yy[i] = y[j]
end
cor(xx,yy)
end
function do200(x,y)
n = 200
rr = zeros(n)
for i in 1:n
rr[i] = myrandom11(x,y)
end
rr
end
rr = do200(x,y)
histogram(rr , bins=10)
histogram은 Plots의 함수입니다. 도수라든지 자동적으로 계산해 주는 것 같고 뛰어난 물건이군요. 조금 감동했습니다.
이번은 이상입니다.
Reference
이 문제에 관하여(통계학 입문의 공 Julia (4) - 최소 제곱법과 결정 계수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sand/items/38e7e08a50b82849a859
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
x=[71, 68, 66, 67, 70, 71, 70, 73, 72, 65, 66]
y=[69, 64, 65, 63, 65, 62, 65, 64, 66, 59, 62]
plot(x,y,seriestype=:scatter)
function myrandom11(x,y)
n = 11
idx=rand(1:n, 11)
xx = zeros(n)
yy = zeros(n)
for i in 1:n
j=idx[i]
xx[i] = x[j]
yy[i] = y[j]
end
cor(xx,yy)
end
function do200(x,y)
n = 200
rr = zeros(n)
for i in 1:n
rr[i] = myrandom11(x,y)
end
rr
end
rr = do200(x,y)
histogram(rr , bins=10)
Reference
이 문제에 관하여(통계학 입문의 공 Julia (4) - 최소 제곱법과 결정 계수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sand/items/38e7e08a50b82849a859텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)