x=read.table("d:/data/salary.txt") y=x[x[,2]==2,1];x=x[x[,2]==1,1]; x1=x-median(outer(x,y,"-")) xy=cbind(c(x1,y),c(rep(1,length(x)),rep(2,length(y)))) xy1=xy[order(xy[,1]),];z=xy[,1];n=length(z) a1=2:3;b=2:3; for(i in seq(1,n,2)){b=b+4;a1=c(a1,b)} a2=c(1,a1+2);z=NULL; for(i in 1:n)z=c(z,(i-floor(i/2))) b=1:2;for( i in seq(1,(n+2-2),2)) if(z[i]/2!=floor(z[i]/2)) {z[i:(i+1)]=b;b=b+2};zz=cbind(c(0,0,z[1:(n-2)]),z[1:n]) if(n==1)R=1;if(n==2)R=c(1,2); if(n>2)R=c(a2[1:zz[n,1]],rev(a1[1:zz[n,2]])) xy2=cbind(xy1,R);Wx=sum(xy2[xy2[,2]==1,3]); Wy=sum(xy2[xy2[,2]==2,3]); nx=length(x);ny=length(y); Wxy=Wy-0.5*ny*(ny+1);Wyx=Wx-0.5*nx*(nx+1) Wx=sum(xy2[xy2[,2]==1,3]);Wy=sum(xy2[xy2[,2]==2,3]) nx=length(x);ny=length(y);Wxy=Wy-0.5*ny*(ny+1); Wyx=Wx-0.5*nx*(nx+1);pvalue=pwilcox(Wyx,nx,ny)
时间: 2024-04-26 09:20:59 浏览: 126
这段代码是进行了一个Wilcoxon秩和检验,用于比较两组样本的中位数是否有显著差异。其中,x和y分别表示两组样本的数据,代码首先将它们分别提取出来进行处理。然后,将两组数据合并在一起,计算每个数据对应的组别(1或2),并按照数据的大小排序。接着,根据组别计算每个数据的秩,并将秩值存储在R中。最后,根据计算出来的Wx、Wy、Wxy、Wyx和样本量nx、ny,使用pwilcox函数计算出p值。
相关问题
x=read.table('C:/Users/Sky/Desktop/data/data/salary.TXT') y=x[x[,2]==2,1]; x=x[x[,2]==1,1]; x1=x-median(outer(x,y,"-")) xy=cbind(c(x1,y),c(rep(1,length(x)),rep(2,length(y)))) xy1=xy[order(xy[,1]),];z=xy[,1];n=length(z) a1=2:3;b=2:3; for(i in seq(1,n,2)){b=b+4;a1=c(a1,b)} a2=c(1,a1+2);z=NULL; for(i in 1:n)z=c(z,(i-floor(i/2))) b=1:2;for( i in seq(1,(n+2-2),2)) if(z[i]/2!=floor(z[i]/2)) {z[i:(i+1)]=b;b=b+2};zz=cbind(c(0,0,z[1:(n-2)]),z[1:n]) if(n==1)R=1;if(n==2)R=c(1,2); if(n>2)R=c(a2[1:zz[n,1]],rev(a1[1:zz[n,2]])) xy2=cbind(xy1,R);Wx=sum(xy2[xy2[,2]==1,3]); Wy=sum(xy2[xy2[,2]==2,3]); nx=length(x);ny=length(y); Wxy=Wy-0.5*ny*(ny+1);Wyx=Wx-0.5*nx*(nx+1) Wx=sum(xy2[xy2[,2]==1,3]);Wy=sum(xy2[xy2[,2]==2,3]) nx=length(x);ny=length(y);Wxy=Wy-0.5*ny*(ny+1); Wyx=Wx-0.5*nx*(nx+1);pvalue=pwilcox(Wyx,nx,ny)
这段代码是用R语言编写的吧,看起来像是进行了一个Wilcoxon秩和检验,用于比较两组样本的中位数是否相等。其中x是第一组样本,y是第二组样本,xy是将它们合并在一起,并加上分类标记后的结果。代码中计算了Wx、Wy、Wxy、Wyx以及p-value。需要注意的是,这段代码中有多个重复的语句,可以简化一下。
import pandas as pd from pandas import Series,DataFrame import numpy as np df=pd.read_table('D:adult.txt',sep=',') df.head() # 特征数据 data = df.iloc[:,:-1].copy() data.head() # 标签数据 target = df[["salary"]].copy() target.head() # 查看总共有多少个职业 ws = data.workclass.unique() ws # 定义转化函数 def convert_ws(item): # np.argwhere函数会返回,相应职业对应的索引 return np.argwhere(ws==item)[0,0] # 将职业转化为职业列表中索引值 data.workclass = data.workclass.map(convert_ws) # 查看职业转化后的数据 data.head() # 需要进行量化的属性 cols = ['education',"marital_status","occupation","relationship","race","sex","native_country"] # 使用遍历的方式对各列属性进行量化 def convert_item(item): return np.argwhere(uni == item)[0,0] for col in cols: uni = data[col].unique() data[col] = data[col].map(convert_item) # 查看对所有列进行量化后的数据 data.head() from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split # 创建模型 knn = KNeighborsClassifier(n_neighbors=8) # 划分训练集与测试集 x_train,x_test,y_train,y_test = train_test_split(data,target,test_size=0.01) # 对模型进行训练 knn.fit(x_train,y_train) # 使用测试集查看模型的准确度 knn.score(x_test,y_test) # 把所有的数据归一化 # 创建归一化函数 def func(x): return (x-min(x))/(max(x)-min(x)) # 对特征数据进行归一化处理 data[data.columns] = data[data.columns].transform(func) data.head() # 划分训练集与测试集 x_train,x_test,y_train,y_test = train_test_split(data,target,test_size=0.01) # 创建模型 knn = KNeighborsClassifier(n_neighbors=8) # 训练模型 knn.fit(x_train,y_train) # 使用测试集查看模型的准确度 knn.score(x_test,y_test)
这段代码的功能是使用 KNN 算法对成人数据集进行分类。代码中使用 pandas 库读取数据集文件,并将数据分为特征数据和标签数据。然后,对一些属性进行量化处理,使它们能够被算法处理。接着,使用 sklearn 库中的 KNeighborsClassifier 类创建模型,将数据集分为训练集和测试集进行训练和测试。最后,对特征数据进行归一化处理,再次对模型进行训练和测试,并输出模型的准确度。
需要注意的是,代码中的转化函数和归一化函数需要根据实际数据集进行修改。另外,test_size 参数的值为 0.01,表示将数据集中的 1% 作为测试集,你可以根据实际情况进行调整。
阅读全文