楼主: iamwilling
9354 8

[问答] 请教一下R语言拟合问题 [推广有奖]

  • 3关注
  • 0粉丝

高中生

72%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
273 点
帖子
20
精华
0
在线时间
27 小时
注册时间
2011-12-19
最后登录
2012-6-12

楼主
iamwilling 发表于 2011-12-20 16:38:55 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
x=[1,2,3,4,5,6,7,8,10,11,12]

y1 =[7098.00,7498.00,7848.00,8254.00,8761.00,8801.12,8951.32,9325.03,968

.90,10200.00,11000.00,12360.74],
怎样用R语言编写R程序分别求出 y=a*b^x ; 和 y=a*x^b   中a和b的值?
谢谢

二维码

扫码加我 拉你入群

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

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

关键词:R语言 R程序 程序

沙发
ELIANE! 发表于 2011-12-20 17:18:52
lm(y~x)

藤椅
xuwei420620 发表于 2011-12-20 20:31:06
lm<-lm(y=x)
summary(lm)

板凳
qoiqpwqr 发表于 2011-12-20 22:51:57
因为你的模型不是线性模型,可以试试用nls来做非线性的拟合

x=c(1,2,3,4,5,6,7,8,9,10,11,12)
y1 =c(7098.00,7498.00,7848.00,8254.00,8761.00,8801.12,8951.32,9325.03,9680.90,10200.00,11000.00,12360.74)
fit1 <- nls(y1 ~ a * b^x, start = list(a=1, b = 2))
plot(y1 ~ x)
lines(seq(1, 12, by = 0.1), predict(fit1, data.frame(x=seq(1, 12, by = 0.1))))
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
UNC + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

报纸
xiaobing212 发表于 2011-12-20 23:40:39
y=a*x^b
取对数 得 log(y)=b*log(ax)
log(y)=b*log(a)+b*log(x)
转化为线性
所以, 用
  1. lm(log(y)~log(x))$coef
复制代码
可得b*log(a)和b

地板
xiaobing212 发表于 2011-12-20 23:53:15
x和y1的长度不一样啊

7
qoiqpwqr 发表于 2011-12-21 00:02:37
xiaobing212 发表于 2011-12-20 23:40
y=a*x^b
取对数 得 log(y)=b*log(ax)
log(y)=b*log(a)+b*log(x)
我觉得要注意一下,如果原来的模型的误差是正太分布的话,做了如上的变换之后的误差就不是正太分布的了。
  1. set.seed(1)
  2. x <- 1:10
  3. y <- 10*x^2 + 5*rnorm(10)
  4. plot(x,y)
  5. fit <- nls(y ~ a*x^b, start = list(a=2, b= 1.5))
  6. lines(seq(1, 20, by = 0.1), predict(fit, data.frame(x=seq(1, 20, by = 0.1))), lwd = 2)
  7. fit

  8. fit.transform <- lm(log(y)~log(x))
  9. a2 <- exp(fit.transform$coef[1])
  10. b2 <- fit.transform$coef[2]
  11. lines(seq(1, 20, by = 0.1), exp(predict(fit.transform, data.frame(x=seq(1, 20, by = 0.1)))))
复制代码


已有 1 人评分学术水平 收起 理由
xiaobing212 + 1 观点有启发

总评分: 学术水平 + 1   查看全部评分

8
xiaobing212 发表于 2011-12-21 00:11:54
qoiqpwqr 发表于 2011-12-21 00:02
我觉得要注意一下,如果原来的模型的误差是正太分布的话,做了如上的变换之后的误差就不是正太分布的了。 ...

9
神释 发表于 2014-8-4 18:38:12
R语言幂律拟合和线性拟合

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 22:12