全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
4003 1
2010-12-26
探索性数据分析的论文需要用到这个TGRL(三组耐抗线)方法来建模,因为要迭代,50多组数据要手工做几乎不可能,于是我只在网上找到了一个R的代码如下
Res<-function(x,precision1,precision2){
if(dim(x)[2]==3){x1<-x[,1];x<-x[,c(2,3)]}                   ##把输入的数据框一般化并按自变量大小且升序排列
o<-order(x[,1])
x<-x[o,]
k<-dim(x)[1]%/%3                                                                    ##确定三组的组长
remainder<-dim(x)[1]%%3
if(remainder==0){L<-x[1:k,];M<-x[(k+1):(2*k),];R<-x[(2*k+1):(3*k),];}
if(remainder==1){L<-x[1:k,];M<-x[(k+1):(2*k+1),];R<-x[(2*k+2):(3*k+1),]}
if(remainder==2){L<-x[1:(k+1),];M<-x[(k+2):(2*k+1),];R<-x[(2*k+2):(3*k+2),]}
amountL<-dim(L)[1]
amountM<-amountL+dim(M)[1]
amountR<-amountM+dim(R)[1]
XL<-summary(L[,1])[["Median"]]                                                             ##开始拟合
XM<-summary(M[,1])[["Median"]]
XR<-summary(R[,1])[["Median"]]
YL<-summary(L[,2])[["Median"]]
YM<-summary(M[,2])[["Median"]]
YR<-summary(R[,2])[["Median"]]
b<-numeric();a<-numeric();c<-numeric();d<-numeric()
b[1]<-(YR-YL)/(XR-XL)
a[1]<-1/3*((YL-b[1]*XL)+(YM-b[1]*XM)+(YR-b[1]*XR))
kexi<-(x[,2]-(a[1]+b[1]*x[,1]))                                                                   ##求残差
savekexi<-kexi
x<-cbind(x,kexi)
L<-x[1:amountL,]                                                             ##下面把残差对自变量回归
M<-x[(amountL+1):amountM,]
R<-x[(amountM+1):amountR,]
XL<-summary(L[,1])[["Median"]]
XM<-summary(M[,1])[["Median"]]
XR<-summary(R[,1])[["Median"]]
kexiL<-summary(L$kexi)[["Median"]]
kexiM<-summary(M$kexi)[["Median"]]
kexiR<-summary(R$kexi)[["Median"]]
d[1]<-(kexiR-kexiL)/(XR-XL)
c[1]<-1/3*((kexiL-d[1]*XL)+(kexiM-d[1]*XM)+(kexiR-d[1]*XR))
i=1                                                                                            ##迭代
while((abs(c[i])>precision1)|abs((d[i])>precision2)){
b[i+1]<-b[i]+d[i]
a[i+1]<-a[i]+c[i]
kexi<-(x[,2]-(a[i+1]+b[i+1]*x[,1]))
x$kexi<-kexi
savekexi<-cbind(savekexi,kexi)
L<-x[1:amountL,]
M<-x[(amountL+1):amountM,]
R<-x[(amountM+1):amountR,]
kexiL<-summary(L$kexi)[["Median"]]
kexiM<-summary(M$kexi)[["Median"]]
kexiR<-summary(R$kexi)[["Median"]]
i=i+1
d[i]<-(kexiR-kexiL)/(XR-XL)
c[i]<-1/3*((kexiL-d[i]*XL)+(kexiM-d[i]*XM)+(kexiR-d[i]*XR))
}
No.kexi<-paste("kexi",1:i)                                                       ##整理数据、合并、显示
colnames(savekexi)<-No.kexi
All<-cbind(x1,x[,c(1,2)],savekexi)
argument<-cbind(a,b,c,d)
list(All, argument)

}



可是本人几乎对R一无所知,并不明白这个函数怎样调用,语法如何,特此求助
二维码

扫码加我 拉你入群

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

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

全部回复
2019-11-27 23:45:21
jimenix 发表于 2010-12-26 01:39
探索性数据分析的论文需要用到这个TGRL(三组耐抗线)方法来建模,因为要迭代,50多组数据要手工做几乎不可 ...
会了吗
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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