求助:用R做回归分析

笑傲蜗牛

2011-08-22 19:47:14 来自: 笑傲蜗牛

用R的lm()函数对数据进行了分析,summary()后的模型参数会出现很多:

Call:
lm(formula = col1 ~ age + I(age^2) + I(age^3) + I(age^4))

Residuals:
Min 1Q Median 3Q Max
-0.39664 -0.21942 -0.07608 0.18049 0.78404

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.013e+00 1.243e-01 24.238 3.41e-15 ***
age -2.046e-04 8.171e-05 -2.504 0.0221 *
I(age^2) 1.374e-08 1.113e-08 1.235 0.2328
I(age^3) -2.892e-13 5.007e-13 -0.578 0.5707
I(age^4) 1.340e-18 7.094e-18 0.189 0.8523
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3166 on 18 degrees of freedom
Multiple R-squared: 0.5624, Adjusted R-squared: 0.4652
F-statistic: 5.783 on 4 and 18 DF, p-value: 0.003567
我只想要Adjusted R-squared这一项该怎么做?
查了提取模型参数的通用函数,但是好像没有这一个。

3人 喜欢
  • 大刀

    2011-08-22 21:29:58 大刀 (持续努力,不断进步)

    summary(lm(y~x))$r.squared

  • 夜空的彼方

    2011-08-28 13:37:02 夜空的彼方

    可以试着探索一下summary(lm(y~x))到底是什么。

    首先看一下summary(lm(y~x))是什么数据类型:
    > m <- lm(y~x)
    > class(summary(m))
    [1] "summary.lm"

    #可以看到,lm的结果是一个"summary.lm" 对象。这有些显而易见。好吧,继续探索。

    R语言中所有的对象都建立在一些native data structures之上,那么summary(lm(y~x)的native data structure是什么呢?可以用mode()命令查看。

    第二步:
    > mode(summary(m))
    [1] "list"

    OK,原来summary(lm(y~x))本质上是一个list。这下好办了。你可以用names()命令来 看看这个list中所有元素的名字。

    > names(summary(m))
    [1] "call" "terms" "residuals" "coefficients" "aliased" "sigma"
    [7] "df" "adj.r.squared" "r.squared" "cov.unscaled"

    现在你可以用summary(m)$...命令来提取任何你想要的结果了。

  • 夜空的彼方

    2011-08-28 13:39:58 夜空的彼方

    一个更简单有效的查看数据结构的办法是,使用str()命令。

    > str(summary(m))
    List of 10
    $ call : language lm(formula = 1 ~ 1)
    $ terms :Classes 'terms', 'formula' length 3 1 ~ 1
    .. ..- attr(*, "variables")= language list(1)
    .. ..- attr(*, "factors")= int(0)
    .. ..- attr(*, "term.labels")= chr(0)
    .. ..- attr(*, "order")= int(0)
    .. ..- attr(*, "intercept")= int 1
    .. ..- attr(*, "response")= int 1
    .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
    .. ..- attr(*, "predvars")= language list(1)
    .. ..- attr(*, "dataClasses")= Named chr "numeric"
    .. .. ..- attr(*, "names")= chr "1"
    $ residuals : Named num 0
    ..- attr(*, "names")= chr "1"
    $ coefficients : num [1, 1:4] 1 NaN NaN NaN
    ..- attr(*, "dimnames")=List of 2
    .. ..$ : chr "(Intercept)"
    .. ..$ : chr [1:4] "Estimate" "Std. Error" "t value" "Pr(>|t|)"
    $ aliased : Named logi FALSE
    ..- attr(*, "names")= chr "(Intercept)"
    $ sigma : num NaN
    $ df : int [1:3] 1 0 1
    $ adj.r.squared: num 0
    $ r.squared : num 0
    $ cov.unscaled : num [1, 1] 1
    ..- attr(*, "dimnames")=List of 2
    .. ..$ : chr "(Intercept)"
    .. ..$ : chr "(Intercept)"
    - attr(*, "class")= chr "summary.lm"

  • 夜空的彼方

    2011-08-28 13:40:37 夜空的彼方

    一般来说,结合class, mode和str三个命令,可以非常有效对数据结构进行探索。

  • 孑潜

    2012-01-31 23:47:25 孑潜 (不以物喜,不以己悲。)

    一般来说,结合class, mode和str三个命令,可以非常有效对数据结构进行探索。 一般来说,结合class, mode和str三个命令,可以非常有效对数据结构进行探索。 夜空的彼方

    讲解的太好了。哈哈

  • 2012-05-17 10:46:36

    很神,很强大!

  • 妖妖三拐

    2012-05-17 12:06:51 妖妖三拐 (cfso-1137)

    学习了


这个小组的成员也喜欢去  · · · · · ·

TeXperience
TeXperience (971)
matlab
matlab (590)
人工智能
人工智能 (2513)
离散数学
离散数学 (3543)
图像处理中的数学问题
图像处理中的数学问题 (571)
光通信
光通信 (224)