全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
14751 9
2017-04-26
各位大神:

最近想利用R对数据进行标准化处理,文献中常用Z-Score方法对数据进行标准化,数学公式为:Z=(x-x(mean))/x(sd)

数据框中每个数值减去该列的平均值,再除以该列的方差

在R中编写了一个标准化函数:

Zscore<-function(x){
for(i in 1:ncol(x))
c=(x[,1:ncol(x)]-apply(x[,1:ncol(x)],2,mean))/apply(x[,1:ncol(x)],2,var)
}
return(c)
}


实际使用中却发现标准化后的数据,与利用Excel计算的结果不一致,求教各位是否函数哪里编写错误,求助!
二维码

扫码加我 拉你入群

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

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

全部回复
2017-4-26 16:01:25
除以标准差不是方差
二维码

扫码加我 拉你入群

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

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

2017-4-26 16:11:47
stzhao 发表于 2017-4-26 16:01
除以标准差不是方差
用R计算x[,1:ncol(x)]-apply(x[,1:ncol(x),2,mean]),得出的值就和Excel结果不一致了,我用rnorm虚构了10行2列的数据,表现为单数行(1,3,5,7,9....)结果与Excel一致,偶数行第一列计算结果是每行减去第二列均值(正确应为减去第一列均值),是否我循环命令哪里出错?
二维码

扫码加我 拉你入群

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

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

2017-4-26 16:17:07
scale()函数可以直接求z分数
二维码

扫码加我 拉你入群

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

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

2017-4-26 16:25:14
xugami 发表于 2017-4-26 16:17
scale()函数可以直接求z分数
Sigmoid<-function(x){
for(i in 1:ncol(x)){
m<-c()
v<-c()
c=(x[,1:ncol(x)]-apply(x[,1:ncol(x)],2,mean))/apply(x[,1:ncol(x)],2,var)
d=1/(1+exp(-c))
}
return(d)
}

如上,Z只是标准化的一步或一种,因为在作不同标准化处理对数据分析结果的影响,涉及到文献当中不同标准化的方法,还有模型拟合后的反标准化,所以想自己编写标准化函数,但是否是循环语句错误,如上,第一句循环就出现计算错误,有无解决办法没?求教
二维码

扫码加我 拉你入群

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

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

2017-4-26 18:22:11
qq402977180,私聊?
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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