こんにちは、すべて。そこで私は、一部のlm()
で生成された回帰の推定値(たとえば、H_0:Beta_j = "some constant" vs H_1:Beta_j < "一定の定数")でt検定を実行する簡単なカスタム関数を書くことにしました。 これは自分のコードを初めて作成するときですが、数ヶ月間Rを使って作業していましたが、私はそれをよく理解していると思いますので、どうして "subscript out of bounds"それを実行しています。私のカスタム関数で "subscript out of bounds"エラーが発生しましたか?
私のコード:。
custom_test<-function(data,coeff,alt,alternative=c("two.sided","greater","less"),clevel=.95){
dof<-data$df.residual
top<-data$coefficients["coeff"]-alt
bottom=coef(summary(data))["coeff","Std. Error"]
stat<-abs(top/bottom)
if (alternative=="two.sided") {
tstat<-qt(clevel/2,dof)
pstat<-2*pt(tstat,dof)
return(pstat)
} else if (alternative=="greater") {
tstat<-qt(clevel/2,dof)
pstat<-pt(tstat,dof)
return(pstat)
} else if (alternative=="less") {
tstat<-qt(clevel/2,dof)
pstat<-pt(tstat,dof)
return(pstat)
} else {
return("Error")
}
}
そして、私はhrsemp
はVARされ、標準lm()
結果でこれを実行しようとすると、エラーが発生します。
custom_test(fit9,hrsemp,0,alternative="less")
Error in coef(summary(data))["coeff", "Std. Error"] :
subscript out of bounds
しかし、毎回私は、問題のあるコードを実行します手動で私は答えを得る:
> coef(fit9)
(Intercept) hrsemp log(sales) log(employ)
12.45837237 -0.02926893 -0.96202698 0.76147045
> coef(summary(fit9))["hrsemp", "Std. Error"]
[1] 0.02280484
その他このエラーに関するスタック交換の質問はすべて微妙に異なっているようで、これまでのところ私のレッスンを自分のコードに一般化することはできませんでした。
誰かが間違っていると説明してください。
[再現可能な例](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)を提供して、実行してテストできるようにする必要があります関数。現時点では、実際に関数に渡しているものは不明です。 – MrFlick
エラーは、「coeff」がrownameではないこと、または「Std。Error」が索引付けしているオブジェクトの列名ではないことを示します。 '?Extract'を読んでください - このエラーを起こした他のSOのポスターと同じ、無効なインデックスを渡しました。 – Frank
私は上記の私の質問を編集しました。私はあなたが言ったことを見ましたが、手動でコードの問題の部分を入力すると問題はありませんが、何らかの理由でコード内でエラーが発生します。なぜこれができますか? – Coolio2654