为什么在预测R中的线性模型时会收到警告'newdata'有1行,但发现的变量却有X行?
我们得到newdata的原因有1行警告是因为newdata没有正确定义。我们应该给新数据指定解释变量或自变量的名称,以便模型可以识别出我们正在传递解释变量的均值,否则它将考虑所有解释值,因此预测函数的结果将得出样本量的预测值。
示例
请看以下数据帧-
set.seed(123) x<-rnorm(20,0.05) y<-rpois(20,5) df<-data.frame(x,y) df x y 1 -0.5104756 3 2 -0.1801775 4 3 1.6087083 4 4 0.1205084 4 5 0.1792877 3 6 1.7650650 3 7 0.5109162 3 8 -1.2150612 5 9 -0.6368529 4 10 -0.3956620 7 11 1.2740818 2 12 0.4098138 5 13 0.4507715 7 14 0.1606827 2 15 -0.5058411 5 16 1.8369131 3 17 0.5478505 3 18 -1.9166172 6 19 0.7513559 8 20 -0.4227914 4
创建线性模型-
M<-lm(y~x,data=df)
现在,让我们针对x的平均值预测y的值-
predict(M,newdata=data.frame(mean(df$x)),interval="confidence") fit lwr upr 1 4.645695 3.690676 5.600715 2 4.459543 3.635161 5.283925 3 3.451347 2.071115 4.831579 4 4.290080 3.520452 5.059707 5 4.256952 3.489416 5.024489 6 3.363226 1.876124 4.850329 7 4.070050 3.260221 4.879880 8 5.042792 3.669549 6.416034 9 4.716920 3.697691 5.736149 10 4.580988 3.678189 5.483786 11 3.639939 2.475080 4.804798 12 4.127031 3.339496 4.914565 13 4.103947 3.308320 4.899575 14 4.267438 3.499558 5.035318 15 4.643083 3.690292 5.595875 16 3.322734 1.785518 4.859949 17 4.049235 3.229372 4.869097 18 5.438181 3.566862 7.309500 19 3.934541 3.043288 4.825795 20 4.596277 3.681723 5.510832
警告消息-
'newdata'有1行,但是找到的变量有20行
为了摆脱这个警告,我们需要为x变量定义newdata,如下所示-
predict(M,newdata=data.frame(x=mean(df$x)),interval="confidence") fit lwr upr 1 4.25 3.482529 5.017471
当我们尝试预测y为固定值时,也会发生相同的事情-
predict(M,newdata=data.frame(1.2),interval="confidence")
fit lwr upr
1 4.645695 3.690676 5.600715
2 4.459543 3.635161 5.283925
3 3.451347 2.071115 4.831579
4 4.290080 3.520452 5.059707
5 4.256952 3.489416 5.024489
6 3.363226 1.876124 4.850329
7 4.070050 3.260221 4.879880
8 5.042792 3.669549 6.416034
9 4.716920 3.697691 5.736149
10 4.580988 3.678189 5.483786
11 3.639939 2.475080 4.804798
12 4.127031 3.339496 4.914565
13 4.103947 3.308320 4.899575
14 4.267438 3.499558 5.035318
15 4.643083 3.690292 5.595875
16 3.322734 1.785518 4.859949
17 4.049235 3.229372 4.869097
18 5.438181 3.566862 7.309500
19 3.934541 3.043288 4.825795
20 4.596277 3.681723 5.510832警告消息-
'newdata'有1行,但是找到的变量有20行
predict(M,newdata=data.frame(x=1.2),interval="confidence")
fit lwr upr
1 3.681691 2.56125 4.802131热门推荐
10 财运虎年祝福语简短语
11 单亲爸爸春节祝福语简短
12 狗狗上厕所训练
13 植物种植祝福语简短
14 翻译考试祝福语朋友简短
15 个人周年庆简短祝福语
16 狗狗怎么训练
17 分别祝福语简短搞笑英文
18 生日广州男生祝福语简短