我正在尝试在R中进行简单的最小二乘回归,并且一直在犯错误.这真是令人沮丧,任何人都可以指出我做错了什么?
首先,我附上数据集(17个变量,440个观测值,每个观测值在一条线上,没有列标题).在这里,我得到一个"蒙面"错误.根据我的阅读,当对象重叠时会发生"屏蔽"错误.但是在这里我没有使用任何软件包,而是默认,我在此之前加载了一个新的工作区图像.不确定这个错误是指什么?
> cdi=read.table("APPENC02.txt", header=FALSE)
> attach(cdi)
The following objects are masked from cdi (position 3):
V1, V10, V11, V12, V13, V14, V15, V16, V17, V2, V3, V4, V5, V6, V7, V8, V9
Run Code Online (Sandbox Code Playgroud)
接下来,由于数据集没有标题,我使用colnames()命令添加列名,然后使用命令检查我的工作head():
colnames(cdi)<- c("IDnmbr","Countynm","Stateabv","LandArea","totpop","youngpct","oldpct","actphy","hspbed","srscrime","hsgrad","BAgrad","povpct","unempct","pcincome","totincome","georegion")
> head(cdi)
IDnmbr Countynm Stateabv LandArea totpop youngpct oldpct actphy hspbed srscrime hsgrad BAgrad povpct unempct pcincome totincome georegion
1 1 Los_Angeles CA 4060 8863164 32.1 9.7 23677 27700 688936 70.0 22.3 11.6 8.0 20786 184230 4
2 2 Cook IL 946 5105067 29.2 12.4 15153 21550 436936 73.4 22.8 11 etcetc(manually truncated)
Run Code Online (Sandbox Code Playgroud)
现在最烦人的部分:我无法让lm()函数起作用!
> model1=lm(actphy~totpop)
Error in eval(expr, envir, enclos) : object 'actphy' not found
Run Code Online (Sandbox Code Playgroud)
这不是一个大/小写问题,我试过"actphy"和actphy.是什么赋予了?
此外,我正在关注的手册建议使用该attach()功能,但我读了几篇令人沮丧的帖子.在这种情况下,什么是更好的解决方案?
谢谢!
正如@joran的评论,attach是一件危险的事情.例如,只需看看这组简单的代码:
> x <- 2:1
> d <- data.frame(x=1:2, y=3:4)
> lm(y~x)
Error in eval(expr, envir, enclos) : object 'y' not found
> lm(y~x, data=d)
Call:
lm(formula = y ~ x, data = d)
Coefficients:
(Intercept) x
2 1
> attach(d)
The following object is masked _by_ .GlobalEnv:
x
> lm(y~x, data=d)
Call:
lm(formula = y ~ x, data = d)
Coefficients:
(Intercept) x
2 1
> lm(y~x)
Call:
lm(formula = y ~ x)
Coefficients:
(Intercept) x
5 -1
Run Code Online (Sandbox Code Playgroud)
使用attach将data.frame放在搜索路径上,这允许您lm通过不指定data参数来作弊.但是,这意味着如果全局环境中的对象的名称与data.frame中的对象冲突,则可能会发生奇怪的事情,就像上面显示的代码中的最后两个结果一样.
| 归档时间: |
|
| 查看次数: |
31925 次 |
| 最近记录: |