"R MSE 계산"의 두 판 사이의 차이

 
(같은 사용자의 중간 판 35개는 보이지 않습니다)
2번째 줄: 2번째 줄:
;R MSE 계산
;R MSE 계산


==예시: 단순회귀분석==
==방법 1: 공식에 따라 계산==
<math>\operatorname {MSE} ={\frac {1}{n}}\sum _{i=1}^{n}(Y_{i}-{\hat {Y_{i}}})^{2}</math>
 
=== 예시: 단순회귀분석 ===
<syntaxhighlight lang='r' run>
<syntaxhighlight lang='r' run>
options(echo=T)
df = data.frame(
df = data.frame(
   x = c(1  , 2  , 3  , 4  , 5  , 6  , 7  , 8  , 9  , 10  ),
   x = c(1  , 2  , 3  , 4  , 5  , 6  , 7  , 8  , 9  , 10  ),
   y = c(2.5, 4.0, 3.5, 3.0, 4.5, 4.0, 5.5, 7.0, 6.5,  7.0)
   y = c(2.5, 4.0, 3.5, 3.0, 4.5, 4.0, 5.5, 7.0, 6.5,  7.0)
)
)
model = lm(y ~ x, data=df)
# predict() 없이 계산 (변수명 불필요)
sum( (model$residuals)^2 )/nrow(df) # MSE = 0.4


model = lm(y ~ x, data=df)
# predict() 후 계산 (변수명 필요)
summary( model )
pred = predict(model, data=df)
pred = predict(model, data=df)
# 그림
mean((df$y - pred)^2) # MSE = 0.4
 
# 그림 (optional)
plot(df$x, df$y, pch=16)
plot(df$x, df$y, pch=16)
abline(model)
abline(model)
# MSE
mean((df$y - pred)^2) # 0.4
</syntaxhighlight>
</syntaxhighlight>
:<math>\operatorname{MSE}_1=\dfrac{1^2+1^2+1^2+1^2}{10}=\dfrac{4}{10}=0.4</math>
:<math>\operatorname{MSE}=\dfrac{1^2+1^2+1^2+1^2}{10}=\dfrac{4}{10}=0.4</math>
 
=== 예시: 다중회귀분석 ===
<syntaxhighlight lang='r' run>
df = data.frame(
  radio_ads = c(3,4,9,4,5,5,2,6,5,3),
  tv_ads    = c(1,3,4,1,4,1,4,2,4,2),
  retention = c(5,1,6,2,8,3,4,9,7,4)
)
model = lm(retention ~ ., data=df)
 
# predict() 없이 계산 (변수명 불필요)
sum( (model$residuals)^2 )/nrow(df) # MSE = 4.557339
 
# predict() 후 계산 (변수명 필요)
pred = predict(model, data=df)
mean((df$retention - pred)^2) # MSE = 4.557339
</syntaxhighlight>
 
==방법 2: 함수 mse() 사용==
=== 예시: 단순회귀분석 ===
<syntaxhighlight lang='r' run>
df = data.frame(
  x = c(1  , 2  , 3  , 4  , 5  , 6  , 7  , 8  , 9  , 10  ),
  y = c(2.5, 4.0, 3.5, 3.0, 4.5, 4.0, 5.5, 7.0, 6.5,  7.0)
)
model = lm(y ~ x, data=df)
pred = predict(model, data=df)
library(Metrics)
mse(df$y, pred) # MSE = 0.4
</syntaxhighlight>


==예시: 다중회귀분석==
=== 예시: 다중회귀분석 ===
<syntaxhighlight lang='r' run>
<syntaxhighlight lang='r' run>
options(echo=T)
df = data.frame(
df = data.frame(
   radio_ads = c(3,4,9,4,5,5,2,6,5,3),
   radio_ads = c(3,4,9,4,5,5,2,6,5,3),
29번째 줄: 63번째 줄:
   retention = c(5,1,6,2,8,3,4,9,7,4)
   retention = c(5,1,6,2,8,3,4,9,7,4)
)
)
model = lm(retention ~ radio_ads + tv_ads, data=df)
model = lm(retention ~ ., data=df)
summary( model )
pred = predict(model, data=df)
pred = predict(model, data=df)
# MSE
library(Metrics)
mean((df$retention - pred)^2)
mse(df$retention, pred) # MSE = 4.557339
</syntaxhighlight>
</syntaxhighlight>


==같이 보기==
==같이 보기==
* [[MSE]]
* [[MSE]]
* [[R mse()]]
* [[R RMSE 계산]]
* [[R 다중회귀분석]]
* [[R 다중회귀분석]]


[[분류: R 회귀분석]]
[[분류: R 회귀분석]]

2021년 4월 16일 (금) 22:22 기준 최신판

1 개요[ | ]

R MSE 계산

2 방법 1: 공식에 따라 계산[ | ]

[math]\displaystyle{ \operatorname {MSE} ={\frac {1}{n}}\sum _{i=1}^{n}(Y_{i}-{\hat {Y_{i}}})^{2} }[/math]

2.1 예시: 단순회귀분석[ | ]

df = data.frame(
  x = c(1  , 2  , 3  , 4  , 5  , 6  , 7  , 8  , 9  , 10  ),
  y = c(2.5, 4.0, 3.5, 3.0, 4.5, 4.0, 5.5, 7.0, 6.5,  7.0)
)
model = lm(y ~ x, data=df)

# predict() 없이 계산 (변수명 불필요)
sum( (model$residuals)^2 )/nrow(df) # MSE = 0.4

# predict() 후 계산 (변수명 필요)
pred = predict(model, data=df)
mean((df$y - pred)^2) # MSE = 0.4

# 그림 (optional)
plot(df$x, df$y, pch=16)
abline(model)
[math]\displaystyle{ \operatorname{MSE}=\dfrac{1^2+1^2+1^2+1^2}{10}=\dfrac{4}{10}=0.4 }[/math]

2.2 예시: 다중회귀분석[ | ]

df = data.frame(
  radio_ads = c(3,4,9,4,5,5,2,6,5,3),
  tv_ads    = c(1,3,4,1,4,1,4,2,4,2),
  retention = c(5,1,6,2,8,3,4,9,7,4)
)
model = lm(retention ~ ., data=df)

# predict() 없이 계산 (변수명 불필요)
sum( (model$residuals)^2 )/nrow(df) # MSE = 4.557339

# predict() 후 계산 (변수명 필요)
pred = predict(model, data=df)
mean((df$retention - pred)^2) # MSE = 4.557339

3 방법 2: 함수 mse() 사용[ | ]

3.1 예시: 단순회귀분석[ | ]

df = data.frame(
  x = c(1  , 2  , 3  , 4  , 5  , 6  , 7  , 8  , 9  , 10  ),
  y = c(2.5, 4.0, 3.5, 3.0, 4.5, 4.0, 5.5, 7.0, 6.5,  7.0)
)
model = lm(y ~ x, data=df)
pred = predict(model, data=df)
library(Metrics)
mse(df$y, pred) # MSE = 0.4

3.2 예시: 다중회귀분석[ | ]

df = data.frame(
  radio_ads = c(3,4,9,4,5,5,2,6,5,3),
  tv_ads    = c(1,3,4,1,4,1,4,2,4,2),
  retention = c(5,1,6,2,8,3,4,9,7,4)
)
model = lm(retention ~ ., data=df)
pred = predict(model, data=df)
library(Metrics)
mse(df$retention, pred) # MSE = 4.557339

4 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}