0

私はRが初めてで、初めて関数を作成しようとしています。x が値の行列、y がベクトルである回帰係数、R 2 乗、および調整済み R 2 乗値を提供する関数を作成しようとしています。基本的な方程式を作成するのに問題はありませんでしたが、ユーザーが入力する必要がないように、関数で x 行列に 1 の列を追加する方法が必要です。行列 c(1) の最初の列を作成しますが、それを関数で実行したいと考えています。これには非常に簡単な答えがあるに違いないことはわかっていますが、考えられるすべてのことを試し、さまざまな質問を調べましたが、わかりませんでした (私はこれに非常に慣れていないため、見つけた多くの情報がRオンラインについては、私には理解するのが本当に難しいです)。いずれかの方法、どんな助けでも大歓迎です。明確化のための質問には、できる限りお答えします。次のサンプル データセット/R 関数を使用してテストしています。

x<-cbind(c(4,6,8,10),c(5,3,6,7))

y<-c(2,6,9,4)

fit.lm<-lm(y~x)

summary(fit.lm)

その1の列を追加するだけで、関数は上記の関数と同じ値を返します....これまでの私のコード:

mylm<-function(y,x)

{

betahat<-solve(t(x)%*%x)%*%t(x)%*%y

yhat<-predict(lm(y~x))

Rsquare<-1-((sum((yhat-y)^2))/sum((y-mean(y))^2))

AdjRsquare<-1-((sum((yhat-y)^2))/sum((y-mean(y))^2))%*%((length(y)-1)/(length(y)-length(betahat)))

results<-list(B=betahat,R2=Rsquare,R2A=AdjRsquare)

return(results)

}

mylm(y,x)
4

1 に答える 1

0

ここに答えがありますが、あなたの問題に正確には答えません。一部組み立てが必要です。これで質問に答えられない場合は、質問の形式を変更してください。

mylm <- function(x){
    cbind(1, x)
}

mylm(x)
于 2013-02-11T05:41:25.123 に答える