定点を通る直線回帰式の傾き Last modified: Jul 22, 2005
目的
定点を通る直線回帰式の傾きを計算する
使用法
sregc(x, x, cxy=NULL)
引数
x 独立変数ベクトル
y 従属変数ベクトル
cxy 定点の x, y 座標。NULL の場合は x, y の平均値(普通の直線回帰式)
ソース
インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/sregc.R", encoding="euc-jp")
# 定点を通る直線回帰式の傾き
sregc <- function( x, # 独立変数
y, # 従属変数
cxy=NULL) # 定点の y 座標
{
OK <- complete.cases(x, y) # 欠損値を持つケースを除く
x <- x[OK]
y <- y[OK]
n <- length(x) # サンプルサイズ
sxy <- sum(x*y)
sxx <- sum(x^2)
sx <- sum(x)
sy <- sum(y)
if (is.null(cxy)) { # cxy が NULL なら,平均値
cx <- mean(x)
cy <- mean(y)
}
else { # 2 つのベクトルとして指定されていれば
cx <- cxy[1]
cy <- cxy[2]
}
return((sxy-cy*sx-cx*sy+n*cx*cy)/(sxx-2*cx*sx+n*cx^2))
}
使用例
> x <- c(1,2,3,4,5,6)
> y <- c(3,2,4,1,4,3)
# 任意の点を通る直線回帰式
> sregc(x, y, cxy=c(0, 2))
[1] 0.2087912
# 原点を通る直線回帰式
> sregc(x, y, cxy=c(0, 0))
[1] 0.6703297
# 定数の指定を省略すると普通の直線回帰式
> (slope <- sregc(x, y))
[1] 0.08571429
> (intercept <- mean(y)-slope*mean(x)) # 切片を計算
[1] 2.533333
# 同じ答えになることを確かめてみる
> lm(y~x)
Call:
lm(formula = y ~ x)
Coefficients:
(Intercept) x
2.53333 0.08571
直前のページへ戻る
E-mail to Shigenobu AOKI