标签: chi-squared

Python中Chi sq检验统计量的P值

我已经计算出一个测试统计量,该统计量被分配为具有1个自由度的卡方,并且想要找出与使用python相对应的P值.

我是一个python和数学/统计新手所以我认为我想要的是来自SciPy的chi2分布的概率denisty函数.但是,当我这样使用时:

from scipy import stats
stats.chi2.pdf(3.84 , 1)
0.029846
Run Code Online (Sandbox Code Playgroud)

然而,一些谷歌搜索和一些知道数学而不是python的同事交谈说它应该是0.05.

有任何想法吗?干杯,戴维

python statistics scipy chi-squared

32
推荐指数
5
解决办法
4万
查看次数

使用scikit-learn进行特征选择

我是机器学习的新手.我正在使用Scikit Learn SVM准备我的数据进行分类.为了选择最好的功能,我使用了以下方法:

SelectKBest(chi2, k=10).fit_transform(A1, A2)
Run Code Online (Sandbox Code Playgroud)

由于我的数据集由负值组成,因此出现以下错误:

ValueError                                Traceback (most recent call last)

/media/5804B87404B856AA/TFM_UC3M/test2_v.py in <module>()
----> 1 
      2 
      3 
      4 
      5 

/usr/local/lib/python2.6/dist-packages/sklearn/base.pyc in fit_transform(self, X, y,     **fit_params)
    427         else:
    428             # fit method of arity 2 (supervised transformation)

--> 429             return self.fit(X, y, **fit_params).transform(X)
    430 
    431 

/usr/local/lib/python2.6/dist-packages/sklearn/feature_selection/univariate_selection.pyc in fit(self, X, y)
    300         self._check_params(X, y)
    301 
--> 302         self.scores_, self.pvalues_ = self.score_func(X, y)
    303         self.scores_ = np.asarray(self.scores_)
    304         self.pvalues_ = np.asarray(self.pvalues_)

/usr/local/lib/python2.6/dist-  packages/sklearn/feature_selection/univariate_selection.pyc in chi2(X, y)
    190     X = atleast2d_or_csr(X) …
Run Code Online (Sandbox Code Playgroud)

python machine-learning chi-squared feature-selection scikit-learn

20
推荐指数
1
解决办法
2万
查看次数

Fisher测试错误:LDSTP太小

输入

NN <- c(359,32);JJ <- c(108,13);NNS <- c(103,15);VBN <- c(95,9);RB <- c(63,11);NNP <- c(56,0);VBG <- c(55,10);IN <- c(38,16);VB <- c(20,10);CD <- c(17,6);CC <- c(11,6);DT <- c(11,4);MD <- c(8,5);PRP4 <- c(8,1);PRP <- c(7,4);FW <- c(5,1);VBD <- c(5,3);RBR <- c(4,0);VBP <- c(4,1);VBZ <- c(4,3);WRB <- c(4,2);EX <- c(3,1);NNPS <- c(2,0);WDT <- c(2,3);WP <- c(2,1);PDT <- c(1,1);POS <- c(1,0);RBS <- c(1,0);TO <- c(1,1);UH <- c(0,1)
Finaltable <-
cbind(NN,JJ,NNS,VBN,RB,NNP,VBG,IN,VB,CD,CC,DT,MD,PRP4,PRP,FW,VBD,RBR,VBP,VBZ,WRB,EX,NNPS,WDT,WP,PDT,POS,RBS,TO,UH)
rownames(Finaltable) <- c("tag1","tag2")
Finaltable

chisq.test(Finaltable)


fisher.test(Finaltable)
Run Code Online (Sandbox Code Playgroud)

产量

fisher.test(Finaltable) : FEXACT error 7.
LDSTP is too …
Run Code Online (Sandbox Code Playgroud)

testing statistics r chi-squared

14
推荐指数
1
解决办法
2万
查看次数

Chi平方测试用Python

我想用Python进行卡方检验.我已经创建了代码来执行此操作,但我不知道我所做的是否正确,因为scipy docs非常稀疏.

背景优先:我有两组用户.我的零假设是,两组中的人是否更有可能使用桌面设备,移动设备或平板电脑没有显着差异.

这些是两组中观察到的频率:

[[u'desktop', 14452], [u'mobile', 4073], [u'tablet', 4287]]
[[u'desktop', 30864], [u'mobile', 11439], [u'tablet', 9887]]
Run Code Online (Sandbox Code Playgroud)

这是我的代码使用scipy.stats.chi2_contingency:

obs = np.array([[14452, 4073, 4287], [30864, 11439, 9887]])
chi2, p, dof, expected = stats.chi2_contingency(obs)
print p
Run Code Online (Sandbox Code Playgroud)

这给了我一个p值2.02258737401e-38,这显然是重要的.

我的问题是:这段代码看起来有效吗?特别是,我不确定我是否应该使用,scipy.stats.chi2_contingency或者scipy.stats.chisquare根据我的数据.

python numpy scipy chi-squared

14
推荐指数
2
解决办法
3万
查看次数

R中的卡方拟合优度检验

我有一个观测值向量,还有一个用模型计算的值向量:

actual <- c(1411,439,214,100,62,38,29,64)
expected <- c(1425.3,399.5,201.6,116.9,72.2,46.3,30.4,64.8)
Run Code Online (Sandbox Code Playgroud)

现在我正在使用卡方拟合优度测试来看看我的模型表现得如何.我写了以下内容:

chisq.test(expected,actual) 
Run Code Online (Sandbox Code Playgroud)

但它不起作用.你能帮帮我吗?

statistics r chi-squared goodness-of-fit

12
推荐指数
1
解决办法
2万
查看次数

scikit learn:未选择所需的最佳功能(k)

我试图使用卡方(scikit-learn 0.10)选择最佳功能.从总共80个培训文档中我首先提取了227个特征,并从这227个特征中我想选择前10个特征.

my_vectorizer = CountVectorizer(analyzer=MyAnalyzer())      
X_train = my_vectorizer.fit_transform(train_data)
X_test = my_vectorizer.transform(test_data)
Y_train = np.array(train_labels)
Y_test = np.array(test_labels)
X_train = np.clip(X_train.toarray(), 0, 1)
X_test = np.clip(X_test.toarray(), 0, 1)    
ch2 = SelectKBest(chi2, k=10)
print X_train.shape
X_train = ch2.fit_transform(X_train, Y_train)
print X_train.shape
Run Code Online (Sandbox Code Playgroud)

结果如下.

(80, 227)
(80, 14)
Run Code Online (Sandbox Code Playgroud)

如果我设置k相等,它们是相似的100.

(80, 227)
(80, 227)
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

*编辑:一个完整​​的输出示例,现在没有剪切,我请求30并获得32:

Train instances: 9 Test instances: 1
Feature extraction...
X_train:
[[0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning chi-squared scikit-learn

8
推荐指数
1
解决办法
2533
查看次数

在R中使用for循环的卡方分析

我正在尝试对数据中的所有变量组合进行卡方分析,我的代码是:

Data <- esoph[ , 1:3]
OldStatistic <- NA
for(i in 1:(ncol(Data)-1)){
for(j in (i+1):ncol(Data)){
Statistic <- data.frame("Row"=colnames(Data)[i], "Column"=colnames(Data)[j],
                     "Chi.Square"=round(chisq.test(Data[ ,i], Data[ ,j])$statistic, 3),
                     "df"=chisq.test(Data[ ,i], Data[ ,j])$parameter,
                     "p.value"=round(chisq.test(Data[ ,i], Data[ ,j])$p.value, 3),
                      row.names=NULL)
temp <- rbind(OldStatistic, Statistic)
OldStatistic <- Statistic
Statistic <- temp
}
}

str(Data)
'data.frame':   88 obs. of  3 variables:
 $ agegp: Ord.factor w/ 6 levels "25-34"<"35-44"<..: 1 1 1 1 1 1 1 1 1 1 ...
 $ alcgp: Ord.factor w/ 4 levels "0-39g/day"<"40-79"<..: 1 1 …
Run Code Online (Sandbox Code Playgroud)

r chi-squared

7
推荐指数
1
解决办法
7772
查看次数

Param不会改变std :: chi_squared_distribution

根据这个问题的答案,我试图<random>通过使用来改变分布的参数.param().下面是一个玩具示例,我正在尝试这样做.

对于卡方和正态分布,我有一个生成两个值的函数,第二个参数已被更改.param().我多次运行这两个函数并打印出两者的平均结果.正如预期的那样,正常函数产生0和10的平均结果.出乎意料的是,卡方函数产生4和4的平均结果,而不是我对4和3的预期.为什么我对卡方分布的预期有所偏差?

#include <iostream>
#include <random>
#include <vector>

using namespace std;

vector<double> chisqtest(mt19937_64 &gen)
{
  vector<double> res(2);
  chi_squared_distribution<double> chisq_dist(4);
  res[0] = chisq_dist(gen);
  chisq_dist.param(std::chi_squared_distribution<double>::param_type (3));
  res[1] = chisq_dist(gen);
  return res;
}

vector<double> normtest(mt19937_64 &gen)
{
  vector<double> res(2);
  normal_distribution<double> norm_dist(0,1);
  res[0] = norm_dist(gen);
  norm_dist.param(std::normal_distribution<double>::param_type (10,1));
  res[1] = norm_dist(gen);
  return res;
}

int main() {
  unsigned int n = 100000;
  mt19937_64 gen(1);

  vector<double> totals = {0,0}, res(2);
  for(unsigned int i = 0; i < n; …
Run Code Online (Sandbox Code Playgroud)

c++ random chi-squared

6
推荐指数
0
解决办法
94
查看次数

如何获得卡方值作为 scipy.optimize.curve_fit 的输出?

是否有可能获得卡方的值作为 的直接输出scipy.optimize.curve_fit()

通常,通过对模型和数据之间的差异求平方、不确定性加权和总和,在拟合后很容易计算它。然而,当参数sigma传递一个二维矩阵(数据的协方差矩阵)而不是一个简单的一维数组时,它就不那么直接了。

最佳拟合参数及其协方差矩阵真的是唯一可以从中提取的两个输出curve_fit()吗?

python curve-fitting scipy chi-squared

6
推荐指数
1
解决办法
1万
查看次数

卡方分析 - 预期频率在 (0,) 处有一个零元素。错误

我正在处理数据,试图查看两个变量之间的关联,并在 Python 的 Scipy 包中使用卡方分析。

这是两个变量的交叉表结果:

pd.crosstab(data['loan_default'],data['id_proofs'])
Run Code Online (Sandbox Code Playgroud)

结果:

   id_proofs    2   3   4   5
  loan_default              
    0   167035  15232   273 3
    1   46354   4202    54  1
Run Code Online (Sandbox Code Playgroud)

如果我对相同的数据应用卡方,我会看到一条错误:ValueError:内部计算的预期频率表在 (0,) 处有一个零元素。

代码:

from scipy.stats import chi2_contingency
stat,p,dof,expec = chi2_contingency(data['loan_default'],data['id_proofs'])
print(stat,p,dof,expec)
Run Code Online (Sandbox Code Playgroud)

错误报告:

    ---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-154-63c6f49aec48> in <module>()
      1 from scipy.stats import chi2_contingency
----> 2 stat,p,dof,expec = chi2_contingency(data['loan_default'],data['id_proofs'])
      3 print(stat,p,dof,expec)

~/anaconda3/lib/python3.6/site-packages/scipy/stats/contingency.py in chi2_contingency(observed, correction, lambda_)
    251         zeropos = list(zip(*np.where(expected == 0)))[0]
    252         raise ValueError("The internally computed table of expected "
--> …
Run Code Online (Sandbox Code Playgroud)

python statistics machine-learning scipy chi-squared

6
推荐指数
1
解决办法
9951
查看次数