0

lm オブジェクトがあり、係数で抽出された式を取得したいと考えています。このオブジェクトには、月などのカテゴリ変数と、これらのカテゴリ変数および数値変数との相互作用が含まれます。

別のユーザーが、カテゴリ変数以外のすべてで機能するコードを手伝ってくれましたが、カテゴリ変数を追加すると (ここでは d など)、エラーが発生し、「エラー (テキスト = x) : :1:785:予期しない数値定数":

a = c(1, 2, 5, 13, 40, 29, 82, 22, 34, 54, 12, 31, 21, 29, 31, 42)
b = c(12, 15, 20, 12, 34, 56, 12, 12, 15, 20, 12, 34, 56, 12, 32, 41)
c = c(20, 30, 40, 18, 72, 34, 12, 40, 18, 72, 28, 65, 21, 32, 42, 52)
d = structure(c(8L, 1L, 9L, 7L, 6L, 2L, 12L, 11L, 10L, 3L, 5L, 4L, 
8L, 1L, 9L, 7L), .Label = c("April", "August", "December", 
"February", "January", "July", "June", "March", "May", "November", 
"October", "September"), class = "factor")


model = lm(a~b+c+factor(d))

as.formula(
  paste0("y ~ ", round(coefficients(model)[1],2), " + ", 
    paste(sprintf("%.2f * %s", 
                  coefficients(model)[-1],  
                  names(coefficients(model)[-1])), 
          collapse=" + ")
  )
)

私が上から得たものは、「解析中のエラー(テキスト= x)::1:53:予期しないシンボル1:y〜-7 + 14.23 * b + -6.82 * c + -529.30 * factor(d)August

私が望むのは、各月に係数を掛けた完全な式を取得することです (または、この場合はそのうちの 3 つだけです。実際のデータセットでは、はるかに多くのデータがあり、すべての月が少なくとも 8 回発生します)。しかし、この例では「予期しないシンボル」を使用し、実際のデータでは「解析中のエラー(テキスト = x) : :1:785: 予期しない数値定数」を使用して停止し、ここで行うように月を実行しようとさえしません。 (例と実際のコードの違いの理由がわからない)。

私の式は非常に大きいので、スケールアップできる必要があります (現在のコードはそうしています)。

4

2 に答える 2

0

モデルには、5 つの説明変数と 3 つのデータ ポイントしかありません。を参照してくださいsummary(model)

于 2014-01-23T23:40:56.843 に答える
0

作成しているものは で有効formulaではありません。したがって、 の結果を数式Rに強制しようとしないでください。sprintf

したがって、次のようなもの

sprintf(' y ~ %.2f + %s', coef(model)[1], 
   paste(sprintf('(%.2f) * %s',
          coef(model)[-1], names(coef(model)[-1]) ), collapse ='+'))
于 2014-01-24T00:05:49.933 に答える