2011-11-23 3 views
0

.net에서 회귀 분석을 수행하려면 LINEST()라는 Excel의 작성 기능을 사용하고 싶습니다..net에서 LinEst() 사용.

는 WorksheetFunction 클래스의

LINEST 방법은

실패 : 내가 squred 매트릭스 배열 기능을 사용할 수,하지만이 정방 행렬이 아닌 경우 위해의 말 [12,3]는 다음이 같은 오류를 제공

이 코드를 작성하는 것이 매우 중요하므로이 부분을 도와주십시오. 당신의 xAll가 LINEST의 적절한 기능()에 대한 3를해야한다 [12,3] 당신의 yDataPoints 길이의 차원이있는 경우

 System.Data.DataTable dt = new System.Data.DataTable(); 
     SqlCommand cmd =new SqlCommand("Select QtytoTransfer from DEmo ",con); 

     SqlDataAdapter adp = new SqlDataAdapter(cmd); 
     adp.Fill(dt); 

     List<double> yDatapoints =new List<double>(); 

     foreach (DataRow dr in dt.Rows) 
     { 
      yDatapoints.Add(Convert.ToDouble(dr["QtytoTransfer"].ToString())); 
     } 



     System.Data.DataTable dt1 = new System.Data.DataTable(); 

     SqlCommand sqlcmd = new SqlCommand("Select CurrentQoh,QtySold,GameTime from DEmo ", con); 

     SqlDataAdapter adp1 = new SqlDataAdapter(sqlcmd); 
     adp1.Fill(dt1); 

     double[,] xAll = new double[dt1.Rows.Count, dt1.Columns.Count]; 
     for (int i = 0; i < dt1.Rows.Count; ++i) 
     { 
      for (int j = 0; j < dt1.Columns.Count; ++j) 
      { 
       xAll[i, j] = Convert.ToDouble(dt1.Rows[i][j].ToString()); 
      } 
     } 

     Microsoft.Office.Interop.Excel.Application xl = new Microsoft.Office.Interop.Excel.Application(); 

     Microsoft.Office.Interop.Excel.WorksheetFunction wsf = xl.WorksheetFunction; 
     object[,] reslut = (object[,])wsf.LinEst(yDatapoints.ToArray(), xAll, missing, true); 
+0

내일까지이 기능을 구현해야하므로 정말 도움이 될 것입니다. 누구든지이 과정을 안내해 줄 수 있습니까? – Surbhi

+1

LinEst (개체, 개체, 개체, 개체) : 개체 함수를 호출하는 코드를 게시 해주십시오. – cgon

+0

전체 코드를 게시했습니다. xAll은 [12,3]의 제곱되지 않은 행렬입니다. – Surbhi

답변

2

: 이 내 전체 코드입니다.

using System; 

namespace InteropExcel { 
    class Program { 
     static void Main(string[] args) { 
      Random rand = new Random(); 
      double[] yDatapoints = new double[3]; 
      for (int i = 0; i < 3; i++) { 
       yDatapoints[i]=rand.Next(20, 60); 
      } 
      double[,] xAll = new double[12, 3]; 
      for (int i = 0; i < 12; i++) { 
       for (int j = 0; j < 3; j++) { 

        xAll[i, j] = rand.Next(2, 100); 
       } 
      } 
      Microsoft.Office.Interop.Excel.Application xl = new Microsoft.Office.Interop.Excel.Application(); 
      Microsoft.Office.Interop.Excel.WorksheetFunction wsf = xl.WorksheetFunction; 
      object[,] result = (object[,])wsf.LinEst(yDatapoints, xAll, Type.Missing, true); 



     } 
    } 
} 

xAll의 열 크기는 yDataPoints 배열의 길이와 같아야합니다. 나에게 알려주세요.

+0

yDataPoints의 크기는 [12,1]입니다. 목록 유형으로 yDataPoints를 사용하고 xAll을 배열로 사용하여 솔루션을 찾습니다. 이제 yDataPoints를 배열 [12,1]로 변환하면 함수가 작동합니다. 더 큰 과제는이 결과를 해석하는 방법입니다. 이것에 대한 단서가 있다면? – Surbhi

+0

도움에 감사드립니다. – Surbhi