修正方法: eval(predvars, data, env) のエラー: オブジェクト 'x' が見つかりません
R で発生する可能性のあるエラーは次のとおりです。
Error in eval(predvars, data, env): object 'x' not found
このエラーは、R の回帰モデルを使用して新しいデータ フレームの応答値を予測しようとしたが、新しいデータ フレームの列名が、使用していたデータ フレームの列名と一致しない場合に発生します。モデルにフィットします。 。
このチュートリアルでは、このエラーを修正する方法を正確に説明します。
エラーを再現する方法
R に単純な線形回帰モデルを当てはめるとします。
#create data frame
data <- data. frame (x=c(1, 2, 2, 3, 5, 6, 8, 9),
y=c(7, 8, 8, 6, 9, 8, 12, 14))
#fit linear regression model to data
model <- lm(y ~ x, data=data)
#view summary of model
summary(model)
Call:
lm(formula = y ~ x, data = data)
Residuals:
Min 1Q Median 3Q Max
-2.1613 -0.7500 0.5000 0.9355 1.5161
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.5161 0.9830 5.611 0.00137 **
x 0.7742 0.1858 4.167 0.00590 **
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 1.463 on 6 degrees of freedom
Multiple R-squared: 0.7432, Adjusted R-squared: 0.7004
F-statistic: 17.37 on 1 and 6 DF, p-value: 0.005896
ここで、 predict()関数を使用して新しいデータ フレームの応答値を予測しようとしているとします。
#define new data frame
new_data <- data. frame (x1=c(4, 5, 7, 8, 9))
#attempt to predict y values for new data frame
predict(model, newdata=new_data)
Error in eval(predvars, data, env): object 'x' not found
モデルのフィッティング時に使用したデータ フレームにはxという名前の予測子変数があったため、エラーが発生しますが、新しいデータ フレームでは予測子変数x1という名前が付けられました。
これらの名前が一致しないため、エラーが発生します。
エラーを修正する方法
このエラーを修正する方法は、新しいデータ フレーム内の予測変数が同じ名前であることを確認するだけです。
したがって、新しいデータ ブロック内の予測変数xに必ず名前を付けます。
#define new data frame
new_data <- data. frame (x=c(4, 5, 7, 8, 9))
これで、 predict()関数を使用して、新しいデータ フレームの応答値を予測できるようになりました。
#predict y values for new data frame
predict(model, newdata=new_data)
1 2 3 4 5
8.612903 9.387097 10.935484 11.709677 12.483871
列名が一致しているため、新しいデータ フレームの y 値をエラーなく正常に予測できます。
追加リソース
次のチュートリアルでは、R の他の一般的なエラーを解決する方法について説明します。
R での修正方法: 名前が以前の名前と一致しない
R での修正方法: 長いオブジェクトの長さが短いオブジェクトの長さの倍数ではない
R での修正方法: コントラストは 2 レベル以上の因子にのみ適用できます。