楼主: 我女儿超靓
4567 15

SAS编程如何迭代求解,如何从A数据集中提取最后一行生成B数据集再重新代入到A中循环。 [推广有奖]

  • 0关注
  • 0粉丝

小学生

7%

还不是VIP/贵宾

-

威望
0
论坛币
8 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
90 点
帖子
2
精华
0
在线时间
3 小时
注册时间
2014-9-5
最后登录
2014-12-28

楼主
我女儿超靓 发表于 2014-12-24 20:55:46 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我想迭代求解,给出初始值后,经过每次迭代,我想要数据集的最后一行,提取之后生成新的数据集,如何在返回用到这个迭代中??希望SAS高手帮忙解决一下,不胜感激!!!!
二维码

扫码加我 拉你入群

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

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

关键词:SAS编程 数据集 不胜感激 初始值 如何

沙发
gssdzc 在职认证  发表于 2014-12-24 21:33:26
This is a interesting question

藤椅
Tigflanker 发表于 2014-12-24 23:10:42
能适当举个简单的例子吗?文字描述毕竟不足够理性。

板凳
pigchenjh 发表于 2014-12-25 09:38:18
举个例子看看呢

报纸
我女儿超靓 发表于 2014-12-28 14:00:12
pigchenjh 发表于 2014-12-25 09:38
举个例子看看呢
data A;
input nit xit nic xic;
yi=log((xit/(nit-xit))/(xic/(nic-xic)));
si_square=1/xit+1/(nit-xit)+1/xic+1/(nic-xic);
cards;
87 64 85 48
146 90 155 99
50 44 50 33
242 150 240 143
59 43 59 38
163 133 169 128
96 42 87 35
192 105 189 113
491 432 488 423
165 121 179 134
run;

proc print data=A;
var yi si_square;
run;
data B;
set A;
xi=1/(nit+nic);
beit0=0;
do while(jj<=0.01)
wi1=1/(si_square+beit0*xi);
wi2_x=(1/(si_square+beit0*xi))*(1/(si_square+beit0*xi))*xi;
wi2_x2=(1/(si_square+beit0*xi))*(1/(si_square+beit0*xi))*xi*xi;
n1=yi/si_square;
s1+1/si_square;
s1_+wi1;
s2+wi2_x2;
m1+n1;
u=m1/s1;
wiy_u=wi2_x*((yi-u)*(yi-u)+1/s1_-si_square);
ss+wiy_u;
do i=1 to 14;
beit=ss/s2;
kk=u-u0;
jj=beit-beit0;
beit0=beit;(这一点我想取beit的最后一个观测赋给beit0,然后用新的beit0再第二次迭代)
end;
run;
proc print data=B;
run;

地板
我女儿超靓 发表于 2014-12-28 14:00:14
pigchenjh 发表于 2014-12-25 09:38
举个例子看看呢
data A;
input nit xit nic xic;
yi=log((xit/(nit-xit))/(xic/(nic-xic)));
si_square=1/xit+1/(nit-xit)+1/xic+1/(nic-xic);
cards;
87 64 85 48
146 90 155 99
50 44 50 33
242 150 240 143
59 43 59 38
163 133 169 128
96 42 87 35
192 105 189 113
491 432 488 423
165 121 179 134
run;

proc print data=A;
var yi si_square;
run;
data B;
set A;
xi=1/(nit+nic);
beit0=0;
do while(jj<=0.01)
wi1=1/(si_square+beit0*xi);
wi2_x=(1/(si_square+beit0*xi))*(1/(si_square+beit0*xi))*xi;
wi2_x2=(1/(si_square+beit0*xi))*(1/(si_square+beit0*xi))*xi*xi;
n1=yi/si_square;
s1+1/si_square;
s1_+wi1;
s2+wi2_x2;
m1+n1;
u=m1/s1;
wiy_u=wi2_x*((yi-u)*(yi-u)+1/s1_-si_square);
ss+wiy_u;
do i=1 to 14;
beit=ss/s2;
kk=u-u0;
jj=beit-beit0;
beit0=beit;(这一点我想取beit的最后一个观测赋给beit0,然后用新的beit0再第二次迭代)
end;
run;
proc print data=B;
run;

7
我女儿超靓 发表于 2014-12-28 14:00:52
pigchenjh 发表于 2014-12-25 09:38
举个例子看看呢
data A;
input nit xit nic xic;
yi=log((xit/(nit-xit))/(xic/(nic-xic)));
si_square=1/xit+1/(nit-xit)+1/xic+1/(nic-xic);
cards;
87 64 85 48
146 90 155 99
50 44 50 33
242 150 240 143
59 43 59 38
163 133 169 128
96 42 87 35
192 105 189 113
491 432 488 423
165 121 179 134
run;

proc print data=A;
var yi si_square;
run;
data B;
set A;
xi=1/(nit+nic);
beit0=0;
do while(jj<=0.01)
wi1=1/(si_square+beit0*xi);
wi2_x=(1/(si_square+beit0*xi))*(1/(si_square+beit0*xi))*xi;
wi2_x2=(1/(si_square+beit0*xi))*(1/(si_square+beit0*xi))*xi*xi;
n1=yi/si_square;
s1+1/si_square;
s1_+wi1;
s2+wi2_x2;
m1+n1;
u=m1/s1;
wiy_u=wi2_x*((yi-u)*(yi-u)+1/s1_-si_square);
ss+wiy_u;
do i=1 to 14;
beit=ss/s2;
kk=u-u0;
jj=beit-beit0;
beit0=beit;(这一点我想取beit的最后一个观测赋给beit0,然后用新的beit0再第二次迭代)
end;
run;
proc print data=B;
run;

8
我女儿超靓 发表于 2014-12-28 14:01:31
我女儿超靓 发表于 2014-12-28 14:00
data A;
input nit xit nic xic;
yi=log((xit/(nit-xit))/(xic/(nic-xic)));
其实就是用不动点迭代法求非线性方程的解。

9
我女儿超靓 发表于 2014-12-28 14:02:38
我女儿超靓 发表于 2014-12-28 14:00
data A;
input nit xit nic xic;
yi=log((xit/(nit-xit))/(xic/(nic-xic)));
其实就是用不动点迭代法求一个非线性方程的解

10
我女儿超靓 发表于 2014-12-28 14:04:37
pigchenjh 发表于 2014-12-25 09:38
举个例子看看呢
data A;
input nit xit nic xic;
yi=log((xit/(nit-xit))/(xic/(nic-xic)));
si_square=1/xit+1/(nit-xit)+1/xic+1/(nic-xic);
cards;
87 64 85 48
146 90 155 99
50 44 50 33
242 150 240 143
59 43 59 38
163 133 169 128
96 42 87 35
192 105 189 113
491 432 488 423
165 121 179 134
run;

proc print data=A;
var yi si_square;
run;
data B;
set A;
xi=1/(nit+nic);
beit0=0;
do while(jj<=0.01)
wi1=1/(si_square+beit0*xi);
wi2_x=(1/(si_square+beit0*xi))*(1/(si_square+beit0*xi))*xi;
wi2_x2=(1/(si_square+beit0*xi))*(1/(si_square+beit0*xi))*xi*xi;
n1=yi/si_square;
s1+1/si_square;
s1_+wi1;
s2+wi2_x2;
m1+n1;
u=m1/s1;
wiy_u=wi2_x*((yi-u)*(yi-u)+1/s1_-si_square);
ss+wiy_u;
do i=1 to 14;
beit=ss/s2;
kk=u-u0;
jj=beit-beit0;
beit0=beit;(这一点我想取beit的最后一个观测赋给beit0,然后用新的beit0再第二次迭代)
end;
run;
proc print data=B;
run;
其实就是用不动点迭代法求一个非线性方程组的解

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

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