R을 이용한 최소 제곱법에 의한 단일 회귀 분석
8595 단어 R
개요
R을 이용한 간단한 단회귀의 함수입니다.
위 그림과 같이 여러 좌표에서 가장 가장 좋은 선을 그릴 수 있습니다.
메인 코드
min.sq 는 구하는 직선의 기울기와 절편을 냅니다.
least.sq는 원하는 직선과 중심화된 직선을 묘사합니다.
least.R# min.sq -----------------------------------------------------------
min.sq <- function(x, y){
x.bar = mean(x)
y.bar = mean(y)
beta.1 = sum((x-x.bar)*(y-y.bar))/sum((x-x.bar)^2)
beta.0 = y.bar-beta.1*x.bar
return(list(a = beta.1, b = beta.0))
}
# least.sq ----------------------------------------------------------------
least.sq <- function(x, y) {
minSq = min.sq(x, y)
abline(minSq$b, minSq$a, col="red")
x = x-mean(x)
y = y-mean(y)
minSq = min.sq(x, y)
abline(minSq$b, minSq$a, col="blue")
}
사용 예
사용하려면 x 좌표와 Y 좌표를 다음과 같이 함수에 전달합니다. 이 예에서는 정규 분포에 따른 난수를 전달합니다.
sampleScript# sampleData --------------------------------------------------------------
X <- rnorm(n = 15, mean = 0, sd = 1)
Y <- rnorm(n = 15, mean = 10, sd = 20)
# graph -------------------------------------------------------------------
plot(X,Y)
abline(h=0)
abline(v=0)
# code --------------------------------------------------------------------
least.sq(X, Y)
print(min.sq(X, Y))
출력 결과
난수로 시도하고 있기 때문에 위의 예에서는 할 때마다 결과가 바뀝니다만, 대체로 이러한 그래프를 얻을 수 있습니다.
또한 다음과 같은 결과를 얻을 수 있습니다. $a는 기울이고 $b는 절편을 의미합니다. 이 값을 이용하여 임의의 x에서 y 좌표를 구할 수 있습니다.
> print(min.sq(X, Y))
$a
[1] 4.860327
$b
[1] 3.854344
요약
상관계수를 구하는 식과 거의 같네요. 파이썬이나 Java 등 다른 언어로 작성해 보는 것도 재미있을지도 모릅니다.
Reference
이 문제에 관하여(R을 이용한 최소 제곱법에 의한 단일 회귀 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/handballtrend777/items/84c57f0d6329815975f7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
min.sq 는 구하는 직선의 기울기와 절편을 냅니다.
least.sq는 원하는 직선과 중심화된 직선을 묘사합니다.
least.R
# min.sq -----------------------------------------------------------
min.sq <- function(x, y){
x.bar = mean(x)
y.bar = mean(y)
beta.1 = sum((x-x.bar)*(y-y.bar))/sum((x-x.bar)^2)
beta.0 = y.bar-beta.1*x.bar
return(list(a = beta.1, b = beta.0))
}
# least.sq ----------------------------------------------------------------
least.sq <- function(x, y) {
minSq = min.sq(x, y)
abline(minSq$b, minSq$a, col="red")
x = x-mean(x)
y = y-mean(y)
minSq = min.sq(x, y)
abline(minSq$b, minSq$a, col="blue")
}
사용 예
사용하려면 x 좌표와 Y 좌표를 다음과 같이 함수에 전달합니다. 이 예에서는 정규 분포에 따른 난수를 전달합니다.
sampleScript# sampleData --------------------------------------------------------------
X <- rnorm(n = 15, mean = 0, sd = 1)
Y <- rnorm(n = 15, mean = 10, sd = 20)
# graph -------------------------------------------------------------------
plot(X,Y)
abline(h=0)
abline(v=0)
# code --------------------------------------------------------------------
least.sq(X, Y)
print(min.sq(X, Y))
출력 결과
난수로 시도하고 있기 때문에 위의 예에서는 할 때마다 결과가 바뀝니다만, 대체로 이러한 그래프를 얻을 수 있습니다.
또한 다음과 같은 결과를 얻을 수 있습니다. $a는 기울이고 $b는 절편을 의미합니다. 이 값을 이용하여 임의의 x에서 y 좌표를 구할 수 있습니다.
> print(min.sq(X, Y))
$a
[1] 4.860327
$b
[1] 3.854344
요약
상관계수를 구하는 식과 거의 같네요. 파이썬이나 Java 등 다른 언어로 작성해 보는 것도 재미있을지도 모릅니다.
Reference
이 문제에 관하여(R을 이용한 최소 제곱법에 의한 단일 회귀 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/handballtrend777/items/84c57f0d6329815975f7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# sampleData --------------------------------------------------------------
X <- rnorm(n = 15, mean = 0, sd = 1)
Y <- rnorm(n = 15, mean = 10, sd = 20)
# graph -------------------------------------------------------------------
plot(X,Y)
abline(h=0)
abline(v=0)
# code --------------------------------------------------------------------
least.sq(X, Y)
print(min.sq(X, Y))
> print(min.sq(X, Y))
$a
[1] 4.860327
$b
[1] 3.854344
상관계수를 구하는 식과 거의 같네요. 파이썬이나 Java 등 다른 언어로 작성해 보는 것도 재미있을지도 모릅니다.
Reference
이 문제에 관하여(R을 이용한 최소 제곱법에 의한 단일 회귀 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/handballtrend777/items/84c57f0d6329815975f7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)