全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2044 3
2017-07-27
Call:
lm.default(formula = QM ~ (WT1 + WT2 + WT3 + WT4 + WT5 + WT6 +
    WT7 + SW1 + SW2 + SW3 + SW4 + SW5 + SW6 + SW7 + SW8)^3, data = zweihochfuenfzehn.withcenterpts)

Residuals:
    Min      1Q  Median      3Q     Max
-3.7816 -0.8627  0.0809  0.9602  2.6832

Coefficients: (214 not defined because of singularities)
              Estimate Std. Error t value Pr(>|t|)   
(Intercept)  3.052e+02  1.583e+03   0.193  0.84734   
WT1         -3.967e+01  4.539e+01  -0.874  0.38347   
WT2         -1.033e+01  4.076e+01  -0.254  0.80018   
WT3         -5.771e+00  3.728e+01  -0.155  0.87718   
WT4          7.490e+00  3.428e+01   0.219  0.82731   
WT5          1.605e+01  3.648e+01   0.440  0.66063   
WT6          1.909e+01  4.676e+01   0.408  0.68360   
WT7          1.176e+01  5.363e+01   0.219  0.82669   
SW1         -5.625e+01  2.087e+02  -0.270  0.78790
。。。
。。。
WT2:SW4:SW8 -1.242e-01  2.302e-01  -0.539  0.59037   
WT2:SW5:SW6         NA         NA      NA       NA   
WT2:SW5:SW7  4.148e-01  2.253e-01   1.841  0.06754 .
WT2:SW5:SW8         NA         NA      NA       NA   
WT2:SW6:SW7 -3.239e-02  2.136e-01  -0.152  0.87966   
WT2:SW6:SW8         NA         NA      NA       NA   
WT2:SW7:SW8  1.179e-01  1.950e-01   0.605  0.54627   
WT3:WT4:WT5  8.925e-03  1.448e-02   0.616  0.53866   
WT3:WT4:WT6         NA         NA      NA       NA   
WT3:WT4:WT7         NA         NA      NA       NA   
WT3:WT4:SW1         NA         NA      NA       NA   
WT3:WT4:SW2         NA         NA      NA       NA   
WT3:WT4:SW3         NA         NA      NA       NA


求大神解答,为什么会出现NA。。。多谢啦
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-7-28 02:00:50
原因是你的数据量太少,但是你在线性方程里设置的变量个数太多,用于线性回归的自由度不够,导致了一个欠定方程的情况。建议楼主在线性方程中只包含主要影响因素,而不要把每个都列进去。推荐两个怎么选择最优变量的R函数,一个是自带的step() 函数,一个是MASS程序包中的stepAIC() 函数,都可以用于线性回归中最优变量的选择。楼主可以看相关的帮助文件和例子。再建议楼主找些关于用R做回归分析的参考资料看看,因为这一块很大很复杂的内容,在做分析前最好能都线性回归各种概念能有基本的了解。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-7-28 02:14:36
忘了给一个例子了,比如假设
> y=data.frame(t=rep(c('t1','t2'),each=3),a=rep(c('a1','a2','a3'),each=2),x=rnorm(6))
> y
   t  a          x
1 t1 a1 -1.4766592
2 t1 a1 -0.1465530
3 t1 a2 -0.7380348
4 t2 a2  0.3720179
5 t2 a3  0.3888076
6 t2 a3  0.1899387
对y进行线性回归,第一个是y=t+a+t*a,结果:
> lm(x~t+a+t:a,y)

Call:
lm(formula = x ~ t + a + t:a, data = y)

Coefficients:
(Intercept)          tt2          aa2          aa3      tt2:aa2      tt2:aa3  
  -0.811606     1.110053     0.073571    -0.009073           NA           NA
就得到了NA,原因是只有6个值,但是把他分组分太多了,t总共有两组,a总共有3组,在他们的交叉项又有好几组。
现在吧交叉项去掉,再看:
> lm(x~t+a,y)

Call:
lm(formula = x ~ t + a, data = y)

Coefficients:
(Intercept)          tt2          aa2          aa3  
  -0.811606     1.110053     0.073571    -0.009073  
就没有NA了,所以楼主的代码里设置的变量个数太多了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-7-28 22:25:04
jimaocai 发表于 2017-7-28 02:00
原因是你的数据量太少,但是你在线性方程里设置的变量个数太多,用于线性回归的自由度不够,导致了一个欠定 ...
谢谢啊! 还有一个问题是,我分析数据,一开始就用half normal plot,就能看出所有的主要影响因素(也就是某些主效应和某些相互作用)。因为我是想分析主效应,2因子效应,3因子效应和4因子效应,所以,我设置回归方程用到4倍(这里我暂时用的3)。 但是,根据half normal图,很不准确判断哪些因子是重要的。那我应该用什么方法准确得出哪些因子是重要的呢?

多谢啊!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群