全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2787 5
2015-11-26
悬赏 50 个论坛币 已解决
问题可以表达为以下形式:
set.seed(123) #随机数种子
y = rnorm(100)   #生成100个正态分布随机数
x = rt(100,5)   #100个t分布随机数,df=5
x2 = x^2  # 之前的x平方,还是100个数


问题来了,想做一个简单的一元回归,被解释变量是y,解释变量是x的平方,尝试了以下形式。
lm(y ~ (x^2)) #第一种,x在lm中平方

lm(y ~ x2) #第二种,x平方后的x2参与回归
lm(y ~ I(x^2)) #第三种,我不明白里面的I()是什么意思(从书上看到的做法,求解答)

结果发现,第二、三种方法结果相同,第一种结果与其他两个不同,不知道为什么,还有I()是什么意思。大家谁能解答一下,谢谢。

ps:附上各自的回归结果

第一种:
lm(formula = y ~ (x^2))

Residuals:
     Min       1Q   Median       3Q      Max
-2.49845 -0.62079 -0.02538  0.66229  2.14778

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  0.09369    0.08999   1.041   0.3004  
x           -0.11632    0.05899  -1.972   0.0515 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8998 on 98 degrees of freedom
Multiple R-squared:  0.03816,

最佳答案

jiangbeilu 查看完整内容

需要加I()这个函数来表示是一个平方项,会先进行运算。 因为lm里的对象是formula,也就是是字符型式的,不会参与运算。 所以你直接用lm(y~(x^2))回归时,得到的结果和lm(y~x)是一样的。 感谢你提供随机数种子,才可以这么快地帮你找到问题所在。
二维码

扫码加我 拉你入群

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

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

全部回复
2015-11-26 12:20:32
复制代码


需要加I()这个函数来表示是一个平方项,会先进行运算。
因为lm里的对象是formula,也就是是字符型式的,不会参与运算。
所以你直接用lm(y~(x^2))回归时,得到的结果和lm(y~x)是一样的。

感谢你提供随机数种子,才可以这么快地帮你找到问题所在。
二维码

扫码加我 拉你入群

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

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

2015-11-26 12:21:11
lm(formula = y ~ x2)

Residuals:
     Min       1Q   Median       3Q      Max
-2.39146 -0.57294 -0.03422  0.60557  2.10730

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
第二种:
(Intercept) 0.078970   0.101935   0.775    0.440
x2          0.004914   0.019115   0.257    0.798

Residual standard error: 0.9172 on 98 degrees of freedom
Multiple R-squared:  0.0006738,        Adjusted R-squared:  -0.009523
F-statistic: 0.06608 on 1 and 98 DF,  p-value: 0.7977
二维码

扫码加我 拉你入群

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

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

2015-11-26 12:23:14
第三种:

lm(formula = y ~ I(x^2))

Residuals:
     Min       1Q   Median       3Q      Max
-2.39146 -0.57294 -0.03422  0.60557  2.10730

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.078970   0.101935   0.775    0.440
I(x^2)      0.004914   0.019115   0.257    0.798

Residual standard error: 0.9172 on 98 degrees of freedom
Multiple R-squared:  0.0006738,        Adjusted R-squared:  -0.009523
F-statistic: 0.06608 on 1 and 98 DF,  p-value: 0.7977
二维码

扫码加我 拉你入群

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

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

2015-11-26 18:34:33
jiangbeilu 发表于 2015-11-26 12:20
需要加I()这个函数来表示是一个平方项,会先进行运算。
因为lm里的对象是formula,也就是是字符型式的, ...
十分感谢!你的回答非常专业!相信对有类似疑问的同学也同样具有价值!谢谢你!
二维码

扫码加我 拉你入群

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

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

2015-11-30 22:12:57
学习一下
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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