木の直径を予測子として、木の高さを従属変数として使用します。この種のデータにはさまざまな方程式が存在し、それらのいくつかをモデル化して結果を比較しようとしています。
R
formula
ただし、1 つの方程式を対応する形式に正しく配置する方法を理解することはできません。
のtrees
データ セットをR
例として使用できます。
data(trees)
df <- trees
df$h <- df$Height * 0.3048 #transform to metric system
df$dbh <- (trees$Girth * 0.3048) / pi #transform tree girth to diameter
最初に、うまく機能すると思われる方程式の例を示します。
form1 <- h ~ I(dbh ^ -1) + I( dbh ^ 2)
m1 <- lm(form1, data = df)
m1
Call:
lm(formula = form1, data = df)
Coefficients:
(Intercept) I(dbh^-1) I(dbh^2)
27.1147 -5.0553 0.1124
係数a
、b
およびc
が推定されます。これは、私たちが関心を持っていることです。
問題のある方程式は次のとおりです。
このように合わせようとしています:
form2 <- h ~ I(dbh ^ 2) / dbh + I(dbh ^ 2) + 1.3
エラーが発生します:
m1 <- lm(form2, data = df)
Error in terms.formula(formula, data = data)
invalid model formula in ExtractVars
/
これは、算術演算子ではなく、ネストされたモデルとして解釈されるためだと思いますか?
これはエラーになりません:
form2 <- h ~ I(I(dbh ^ 2) / dbh + I(dbh ^ 2) + 1.3)
m1 <- lm(form2, data = df)
しかし、結果は私たちが望むものではありません:
m1
Call:
lm(formula = form2, data = df)
Coefficients:
(Intercept) I(I(dbh^2)/dbh + I(dbh^2) + 1.3)
19.3883 0.8727
I()
論理のように、outer 内の項全体に対して 1 つの係数のみが与えられます。
2 番目の方程式をデータにどのように当てはめることができるでしょうか?